集合之Collection接口的常用方法

集合分为两种体系:Collection与Map:两者都是接口

一:Collection接口下又分为两种List与Set接口:Collection接口是单列数据

List是有序的元素可以重复又称为静态数组:有3个实现类:ArrayList,LinkedList,Vector

Set无序不可重复,类似于数学定义上的集合:4个实现类:HashSet,LinkedHashSet,TreeSet

****************************************************************************************

二:Map接口是双列数据,具有映射关系类似函数y=f(x)

5个实现类:HashMap,LinkedHashMap,TreeMap,HashTable,Properties

****************************************************************************************

增强for循环本质上还是调用迭代器进行遍历

  1 /**       集合框架的概述
  2  * 一:集合:
  3  * 与数组一样对多个数据进行存储,简称java容器
  4  * 二:数组存储的特点:
  5  * 1:一旦初始化以后,长度就确定了,
  6  * 2:一旦定义好,数组的类型就确定了,只能操作此类型的变量数据
  7  * 三:数组存储的弊端:
  8  * 1:一旦初始化以后,长度不可更改
  9  * 2:数组中提供的方法十分有限,而且对于数据的增删改查操作十分不便,且效率低
 10  * 3:获取数组中实际元素的个数的需求,数组没有现成的属性或者方法可用
 11  * 4:数据存储数据的特点:序,可重复,对于无序,不可重复的需求不能满足
 12  * 四:集合存储的优点:
 13  * 能够解决数组数据存储的弊端
 14  * ******************************************
 15  *           集合框架
 16  * java集合可分为Collection与Map两种体系(两种都是接口)
 17  * 一:Collection接口:单列数据,定义了一组对象的方法的集合
 18  * 1:List接口:元素有序,数据可重复的集合 ---习惯上称为"动态数组"
 19  * ArrayList,LinkedList,Vector
 20  * 2:Set接口:元素无序,数据不可重复的集合 ---类似于数学定义上的集合
 21  * HashSet,LinkedHashSet,TreeSet
 22  * 二:Map接口:双列数据,保存具有映射关系"key-value对"的集合---函数y=f(x)
 23  * HashMap,LinkedHashMap,TreeMap,HashTable,Properties
 24  * ******************************要求
 25  *对于collection接口中实现类的对象添加数据obj时,要求obj所在的类重写equals()方法:
 26  * 为了使用contains方法时进行数据或者对象比较时,比较的是内容而不是地址值
 27  *****************************
 28  * 增强for循环(foreach循环):针对于数据集合中的数据进行遍历
 29  *
 30  */
 31 public class CollectionTest {
 32     @Test
 33     public void test() {
 34         Collection collection = new ArrayList();
 35         //add(object e):将元素e添加到集合collection中
 36         collection.add("aa");
 37         collection.add("bb");
 38         collection.add(132);//基本数据类型自动装箱成包装类属于object的子类
 39         collection.add(LocalDateTime.now());
 40         collection.add(new MethodTest("hpp", 23));
 41         //size():获取添加元素的个数
 42         System.out.println(collection.size());
 43         //addAll(Collection c):将传入的集合c的元素添加到当前集合里
 44         Collection collection2 = new ArrayList();
 45         collection2.add("hpp");
 46         collection2.add(132612);
 47         System.out.println(collection.addAll(collection2));
 48         System.out.println(collection);
 49         //isEmpty(collection c):判断集合是否为空
 50         Collection collection3 = new ArrayList();
 51         collection3.add(null);//即使集合定义为null,也不为空
 52         System.out.println(collection3.isEmpty());
 53         //contains(Object obj):判断当前集合中是否包含obj
 54         System.out.println(collection.contains(new MethodTest("hpp", 23)));
 55         //containsAll(Collection c):判断当前集合中是否存在输入的集合c
 56         System.out.println(collection.containsAll(collection2));
 57         //remove(object obj):从集合中移除元素,判断是否成功
 58         System.out.println(collection.remove(new MethodTest("hpp", 23)));
 59         System.out.println(collection);
 60         //removeAll(Collection c):求差集,移除当前集合中的c集合的元素,c集合可以有很多当前集合没有的新元素,
 61         // 只要有一个元素与当前集合重复就可以判断为true,
 62         Collection collection4 = new ArrayList();
 63         collection4.add(123456789);
 64         collection4.add("hpp");
 65         collection4.add("aa");
 66         System.out.println(collection.removeAll(collection4));
 67         System.out.println(collection);
 68         //retainAll(Collection c):求交集;只保留当前集合与c集合共同的元素
 69         System.out.println(collection.retainAll(collection2));
 70         System.out.println(collection);
 71         //equals(Object obj):判断当前集合与传入的形参是否相等,换句话要想返回true,传入的至少是个集合,再比较
 72         System.out.println(collection.equals(collection3));
 73         //hashCode():返回当前对象的哈希值
 74         System.out.println(collection2.hashCode());
 75         //toArray():将当前集合转换成数组
 76         Object[] array = collection.toArray();
 77         System.out.println(array[0]);
 78         /**
 79          *****************迭代器iterator***************
 80          */
 81         //iterator():返回一个Iterator(迭代器)接口的实例,只用于遍历集合
 82         collection.add("aa");
 83         collection.add("bb");
 84         collection.add(110);
 85         collection.add(LocalDateTime.now());
 86         Iterator iterator = collection.iterator();
 87         //next():按顺序单个输出迭代器中的元素,
 88         //System.out.println(iterator.next());
 89         //搭配hasNext()使用while循环起到遍历的作用
 90         while (iterator.hasNext()) {
 91             Object obj = iterator.next();
 92             if ("aa".equals(obj)) {
 93                 iterator.remove();
 94             }
 95         }
 96         //错误写法: System.out.println(collection.iterator().next());
 97         // 因为每次调用iterator都会得到一个新的迭代器对象
 98         //remove():遍历时移除此元素
 99         System.out.println(collection);
100         //增强for循环,内部仍然调用迭代器
101         for (Object obj : collection) {
102             System.out.println(obj);
103         }
104         int[] arr = new int[]{1, 2, 4, 79, 45, 27};
105         /**
106         for(集合元素的类型 局部变量:集合对象){
107         System.out.println(局部变量);
108         }
109          *
110          */
111         for (int obj:arr){
112             System.out.println(obj);
113         }
114     }
115 }

 

posted @ 2021-11-02 18:17  tiiiiii  阅读(173)  评论(0)    收藏  举报