集合之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 }
浙公网安备 33010602011771号