Java集合类
Java集合大致分为Set,List,Queue和Map四类。Set代表无顺、不可重复的结合;List代表有序、重复的集合;而Map 代表ket-value具有映射关系的集合,Queue代表一种队列集合的实现。
Java集合类:java.util.*包
Java的集合类主要是由两个接口派生出来:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口包含了一些子接口和实现类。
Collection和Iterator接口
Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可以用于操作Set集合,也可以用于操作List和Queue结合。
Collection接口的操作元素的方法:
boolean add(Object o) 该方法用于向集合里添加一个元素。如果集合对象被添加操作改变了,则返回true。
boolean addAll(Collection c)该方法把集合c里的元素添加到指定集合里。
void clear()清除集合里的所有元素,将集合长度变为0。
boolean contains(Object o) 返回集合里是否包含c里的所有元素
boolean containsAll(Collection c)返回集合里是否包含集合c里的所有元素
boolean isEmpty()返回集合是否为空。当集合长度为0时返回true,否则返回false。
Iterator iterator()返回一个Iterator对象,用于遍历集合里的元素。
boolean remove(Object o) 删除集合中的指定元素o,当集合中包含一个或多个元素o时,该方法只删除第一个符合条件的元素,并返回true。
boolean removeAll(Collection c) 从集合里删除集合c里包含的元素。
boolean retainAll(Collection c) 从集合里删除集合c里不包含的元素(相当于把调用该方法的集合变成该集合和集合c的交集)。
Object[] toArray() 该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素。
Iterator接口
Iterator接口是Java集合框架的成员,是Collection接口的父接口,隐藏了各种Collection实现类的底层细节。
Iterator定义的方法:
boolean hasNext()如果被迭代的集合元素还没有被遍历完,则返回true。
Object next()返回集合里的下一个元素。
void remove()删除集合里上一次next方法返回的元素。
void forEachRemaining(Consumer action)该方法可以使用Lambda表达式来遍历集合元素。
1 @Slf4j 2 public class ListTest { 3 public static void main(String[] args){ 4 List<String> list = Lists.newArrayList(); 5 list.add("Mark"); 6 list.add("Jack"); 7 list.add("Bob"); 8 Iterator<String> iterator = list.iterator(); 9 while (iterator.hasNext()){ 10 String name = iterator.next(); 11 log.info("name:{}", name); 12 } 13 } 14 }
使用Lambda表达式来遍历:iterator.forEachRemaining(o -> log.info("name:{}", o));
Iterator快速失败机制(fast-fail机制):
Iterator在迭代过程中,检测到该集合已经被修改(通常是程序中的其他线程的修改),程序将引发ConcurrentModifyException异常,而不是显示修改后的结果,这样可以避免共享资源引发的
潜在问题。HashSet和List一般都会发生异常。
原文:https://www.cnblogs.com/seedss/p/12622069.html