Java笔记 - Collection集合

xiaoxiao2021-02-27  483

在Java中,当对象多了,为了我们方便操作这些类,在JDK1.2版本后,出现了集合Collection。集合Collection就是用于存储集合的容器。

集合特点: 1. 用于存储对象的容器 2. 集合的长度是可变的 3. 集合中不可以存储基本数据类型值

由于需求不同,Java提供了不同的集合,这些集合容器内部数据结构不同,这些不同的容器将他们的共性不断的向上抽取,就形成了集合框架。框架的顶层就是Collection接口。

Java的集合框架主要有三种:List、Set、Map。 需要注意的是,Collection、List、Set、Map都是接口,不是具体的类的实现。比如List list = new ArrayList();List是接口,ArrayList才是具体的类。

Collection常见方法 1. 添加 boolean add(Object obj):向集合中添加元素,如果添加成功则返回true,否则返回false(add(E e);e现在就相当Object) boolean addAll(Collection coll):添加一个集合 2. 删除 boolean remove(Object obj):删除集合中的元素,如果成功返回true,否则返回false。执行一次,删除开头的一个元素。remove会改变集合的长度。 boolean removeAll(Collection coll):删除集合中包含coll的所有元素 void clear():清空集合 3. 判断 boolean contains(Object obj):如果collection包含指定的元素,返回true,否则返回false。 boolean containsAll(Collection coll) boolean isEmpty():判断集合中是否有元素,如果不包含元素,则返回true。 4. 获取 int size():返回Collection中的元素数。 Iterator iterator():返回在此collection的元素上进行迭代的迭代器。 5. 其他 boolean retainAll(Collection coll):保留两个Collection的交集 Object[] toArray():将集合转成数组

Iterator迭代器 Collection接口从java.lang.Iterable接口中继承了Iterator iterator()方法,该方法返回一个迭代器。在Java中迭代器Iterator是一个接口,位于java.util.Iterator中,Iterator中有三个方法: - next():返回迭代的下一个元素 - boolean hasNext():如果仍有元素可以迭代,返回true - void remove:删除迭代器返回的最后一个元素 例:

Collection c1= new ArrayList(); c1.add("abc1"); c1.add("abc2"); c1.add("abc3"); System.out.println(c1); c1.remove("abc2"); System.out.println(c1); System.out.println(c1.contains("abc3")); System.out.println(c1.isEmpty()); System.out.println(c1.size()); Collection c2 = new ArrayList(); c2.add("abc1"); c2.add("abc4"); c1.addAll(c2); System.out.println(c1); c1.removeAll(c2); System.out.println(c1); c1.add("abc1"); c1.retainAll(c2); System.out.println(c1); System.out.println("-------------------"); //迭代器Iterator Collection coll= new ArrayList(); coll.add("abc1"); coll.add("abc2"); coll.add("abc3"); coll.add("abc4"); coll.add("abc5"); Iterator i = coll.iterator(); System.out.println(i.next()); System.out.println(i.next()); System.out.println(i.hasNext()); i.remove(); System.out.println(coll); while(i.hasNext()){ System.out.println(i.next()); }

输出结果: [abc1, abc2, abc3] [abc1, abc3] true false 2 [abc1, abc3, abc1, abc4] [abc3] [abc1]


abc1 abc2 true [abc1, abc3, abc4, abc5] abc3 abc4 abc5

迭代器原理 迭代器是取出元素的方式,想要取出容器中的数据,因为容器有它自己的数据存储特点,所以迭代器想要取出容器内部的数据,就要依赖容器内部的结构来实现迭代器,否则迭代器与容器不相关,不了解容器内部的数据存储特点,是不知道怎么获取内部数据的。所以迭代器的取出动作应该是直接访问容器内部的元素,所以这个迭代器的实现应该是通过内部类来完成的。 每个容器的内部都有自己的取出方式,这个取出方式在容器的内部,外部不知道,为了能建立起所有容器的统一取出规则,就对其进行了规则的定义: 1.容器内部是否还存在元素hasNext() 2.怎么取出容器内部的元素next() 把这个规则向上抽取,就获得了Iterator接口,所有的容器都实现了这个接口,这个接口就是所有容器公共的取出方法。

转载请注明原文地址: https://www.6miu.com/read-494.html

最新回复(0)