CAD、3ds Max、Maya 等22个机械绘图、三维动画、建筑和工程软件下载和使用许可序列号购买
542
2022-05-28
Collection 接口
所有通用集合实现都有一个带有 Collection 参数的构造函数,此构造函数初始化新集合以包含指定集合中的所有元素,即它允许转换集合的类型。
如把一个 Collection
List
Collection 接口包含执行基本操作的方法:
int size()
boolean isEmpty()
boolean contains(Object element
boolean add(E element)
boolean remove(Object element)
Interator
Collection 接口还包含对整个集合进行操作的方法:
boolean containsAll(Collection> c)
boolean addAll(Collection extends E> c)
boolean removeAll(Collection> c)
boolean retainAll(Collection> c)
void clear()
Collection 接口还存在用于数组操作的附加方法,例如:
Object[] toArray()
JDK 8 及更高版本中,Collection 接口还公开方法 Stream
public interface Collection
add 方法用于向集合中添加元素。如果成功添加元素改变了集合就返回 true;如果集合没有发生改变就返回 false。比如在集合( set )中添加一个对象,如果这个元素在集合中已经存在,这时 add 方法就没有奏效,因为集合中不允许有重复的对象。
interator 方法用于返回一个实现了 Interator 接口的对象,可以使用这个迭代器对象依次访问集合中的元素。
集合遍历接口--迭代器
Iterator 接口包含 4 个方法:
public interface Interator
通过反复调用 next 方法,可以逐个访问集合中的每个元素。但是,如果到达了集合的末尾,next 方法将抛出一个 NoSuchElementException 。因此,在需要调用 next 之前调用 hasNext 方法。
hashNext 如果迭代器对象还有多个可以访问的元素,这个方法就返回 true。
Collection
用 for each 循环可以更加简练地表达同样的循环操作:
for (String element : c) { // do something with element System.out.Println(element);}
for each 循环可以处理任何实现了 Iterable 接口的对象,这个对象只包含一个抽象方法:
public interface Iterable
JDK8 及更高版本中,迭代集合的首选方法是获取流并对其执行聚合操作。聚合操作需要与 Lambda 表达式结合使用,以使用较少的代码使编程更具表现力。
myShapeCollection.stream() .filter(e -> e.getColor() == Color.RED) .forEach(e -> System.out.Println(e.getName()));
访问元素的顺序取决于集合类型。
如果迭代处理一个 ArrayList,迭代器索引从 0 开始,没迭代一次,索引值加 1 。
如果访问 HashSet 中的元素,会按照一种基本上随机的顺序获得元素。(每一次访问的顺序都是唯一的)
Iterator 接口的 remove 方法将会删除上次调用 next 方法时返回的元素。目的是:删除某个元素前最该先看一下这个元素。
集合接口批量操作
批量操作对整个集合执行操作。包含基本的方法有:
contailsAll : 如果目标 Collection 包含指定 Collection 中的所有元素,就返回 true。
addAll : 将指定 Collection 中的所有元素添加到目标 Collection。
removeAll : 从目标 Collection 中删除包含在指定 Collection 中的所有元素。
retainAll : 从目标 Collection 中删除所有所有未包含在指定 Collection 中删除所有未包含在指定 Collection 中的元素。
clear : 从集合中删除所有元素。
如,检测任意集合是否包含指定元素的泛型方法:
public static
其他方法
还有一些实用方法非常有用,应该将它们提供给用户实用。下面列举一部分:
int size() // 返回当前存储在集合中的元素个数boolean isEmpty() // 如何集合中没有元素,返回 trueboolean contains(Object obj) // 如果集合中包含了一个与obj相等的元素,返回trueboolean equals(Object other) // 如果集合与 other 集合相等,返回trueboolean add(E element) // 将一个元素添加到集合中。由于这个调用改变了集合,返回 trueboolean addAll(Collection extends E> from) // 将 other 集合中的所有元素添加到这个集合。如果由于这个调用改变了这个集合,返回trueboolean remove(Object obj) // 从这个集合中删除等于 obj 的对象。如果有匹配的对象被删除,返回trueboolean removeAll(Collection> c) // 从这个集合中删除obj集合中存在的所有元素。如果这个调用改变了集合,返回truedefault boolean removeIf(Predicate super E> filter // JDK8, 从这个集合中删除filter返回true的所有元素,如果因为这个调用改变了集合,返回truevoid clear() // 从这个集合中删除所有的元素boolean retainAll(Collection> c) // 从这个集合中删除所有与other集合元素不同的元素。如果由于这个调用改变了集合,返回trueObject[] toArray() // 返回这个集合中的对象的数组
Reference: Java 核心技术 卷 1 :基础知识(原书第11版)
Java 数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。