版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangshuaionline/article/details/85606736
Collection基于JDK1.2,继承自Iterable,Collection为集合层次结构的根接口,根据是否允许内部元素重复,分为Set和List集合。
包含方法:
- int size();返回集合中元素的数量,如果集合中元素个数大于Integer.MAX_VALUE,则返回Integer.MAX_VALUE。
- boolean isEmpty();如果集合中不包含元素,返回true。否则返回false。
- boolean contains(Object o);如果集合中包含指定元素,则返回true。
- Iterator iterator();返回集合中元素的迭代器。
- Object[] toArray();返回包含此集合中所有元素的数组。
- T[] toArray(T[] a);返回一个包含此集合中所有元素的数组。
输出结果:List<String> arrayList = new ArrayList<>(); arrayList.add("aaa"+11); arrayList.add("aaa"+22); arrayList.add("aaa"+33); List<String> linkedList = new LinkedList<>(); for(int i =0;i<100;i++){ linkedList.add("aaa"+i); } Log.w("打印"," "+linkedList.size()); linkedList.toArray(arrayList.toArray()); Log.w("打印"," "+linkedList.size());
W/打印: 100 W/打印: 100
- boolean add(E e);确保此集合包含指定的元素(list和set不同),如果此集合因调用此方法而更改,则返回true。
- boolean remove(Object o);移除此集合的指定元素,默认单个实例。
输出结果:List<String> linkedList = new LinkedList<>(); for(int i =0;i<100;i++){ linkedList.add("aaa"+i); } linkedList.add("aaa"+1); linkedList.add("aaa"+1); linkedList.add("aaa"+1); Log.w("打印"," "+linkedList.size()); linkedList.remove("aaa"+2); Log.w("打印"," "+linkedList.size());
W/打印: 103 W/打印: 102
- boolean containsAll(Collection<?> c);如果此集合包含指定集合中的所有元素,则返回true。
- boolean addAll(Collection<? extends E> c);将指定集合中的所有元素添加到此集合中,在set和list集合中,此方法执行的逻辑不同。
- boolean removeAll(Collection<?> c); 如果指定集合中的元素在此集合也存在,则删除。调用返回后,此集合将不包含与指定集合相同的元素。
- 第十二个方法基于JDK1.8,是一个default方法:
删除此集合中满足给定谓词Predicate的所有元素。default boolean removeIf(Predicate<? super E> filter) { Objects.requireNonNull(filter); boolean removed = false; final Iterator<E> each = iterator(); while (each.hasNext()) { if (filter.test(each.next())) { each.remove(); removed = true; } } return removed; }
- boolean retainAll(Collection<?> c); 仅保留此集合中包含在指定集合中的元素。
- void clear(); 移除此集合中所有元素,执行之后此集合为空。
- boolean equals(Object o);将指定对象与此集合进行比较以获得相等性。
- int hashCode();返回集合的哈希值。
- 第十七个方法是一个default方法:
JDK1.8开始添加,返回以此集合为源的Stream。default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); }
- 第十八个方法是一个default方法:
JDK1.8开始添加,以此集合为源返回可能并行的Stream,此方法允许返回顺序流。default Stream<E> parallelStream() { return StreamSupport.stream(spliterator(), true); }