集合——Collection
Posted dch-21
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合——Collection相关的知识,希望对你有一定的参考价值。
纯手工敲上去的,可能有些许偏差,见谅
集合的框架
Collection集合
存储特点
- 是单列集合的顶级接口。在这种集合中存储的数据只占一列。所有元素直接存储于各种数据结构中
- Collection集合没有下标的概念。
是否有无下标,要通过它底层实现来进行理解。若是数组和链表则就会有下标,反正则没有。
Collection中的方法
修饰&返回值 | 方法 | 描述 |
---|---|---|
boolean | add(E element) | 将一个指定类型的元素, 添加到集合的末尾。 |
boolean | addAll(Collection<E> coll) | 批量添加,将一个集合中的所有的元素,添加到当前集合的末尾。 |
boolean | remove(E ele) | 删除集合中指定的元素。 |
boolean | removeAll(Collection<E> coll) | 删除集合中所有的在参数集合中存在的元素(删除交集)。 |
boolean | retainAll(Collection<E> coll) | 保留集合中所有的在参数集合中存在的元素,删除其他元素(保留交集)。 |
void | clear() | 清空集合中的所有的数据。 |
boolean | removeIf(Predicate<E> predicate) | 删除集合中满足指定条件的数据。 |
boolean | contains(E ele) | 判断一个集合中是否包含指定的元素。 |
boolean | containsAll(Collection<E> coll) | 判断参数集合中, 是否所有的元素都在当前集合中包含。 |
int | size() | 获取集合中元素的数量, 类似于数组 length。 |
boolean | isEmpty() | 判断一个集合是否是空集合。 |
Object[] | toArray() | 将集合中的元素,转成 Object 数组。 |
T[] | toArray(T[] arr) | 将集合中的元素,转成指定类型的数组。 |
集合的三种遍历方式
-增强for
for (String element : collection) {
System.out.println(element);
}
注意事项
在使用增强for循环进行元素的遍历过程中, 不要修改集合中的内容 !!! 否则, 会出现 ConcurrentModificationException 。
-迭代器(Iterator),才是真正用来遍历集合的。
工作原理
- 使用集合的 iterator() 方法,获取到一个迭代器对象。
- 这个迭代器对象, 内部维护了一个引用, 指向集合中的某一个元素。 默认指向-1位。
- 使用next()方法, 向后移动一位元素指向, 并返回新的指向的元素。
- 如果使用next()方法, 向后移动指向的时候, 已经超出了集合的范围, 指向了一个不存在的元素, 会抛出异常 NoSuchElenmentException。
- 一般情况下, 配合 hasNext() 方法一起使用的。
// 1. 获取到一个迭代器对象
Iterator<String> iterator = collection.iterator();
// 2. 通过hasNext判断是否还有下一个元素
while (iterator.hasNext()) {
// 3. 向后指向,并返回这个新的指向的元素
String ele = iterator.next();
System.out.println(ele);
}
注意:获取迭代器必须紧挨while循环,否则会出现一些错误,比如并发修改异常
错误示例
-forEach(jdk 1.8及以后提供的方法)
collection.forEach(System.out::println);
示例代码1
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
Collection<String> collection=new ArrayList<>();
Collection<String> temp=new ArrayList<>();
collection.add("lucy");
collection.add("lily");
collection.add("poly");
collection.add("uncle wang");
//使用迭代器进行遍历
Iterator<String> iterator=collection.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
}
}
示例代码2
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
Collection<String> collection=new ArrayList<>();
Collection<String> temp=new ArrayList<>();
collection.add("lucy");
collection.add("lily");
collection.add("poly");
collection.add("uncle_wang");
//使用增强for遍历
for(String i:collection){
System.out.print(i+" ");
}
System.out.println();
System.out.println("=====================");
temp.add("uncle_wang");
temp.add("poly");
temp.add("lily");
temp.add("li lei");
collection.addAll(temp);
//使用迭代器进行遍历
Iterator<String> iterator=collection.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
}
}
示例代码3
public class Test {
public static void main(String[] args) {
Collection<String> collection=new ArrayList<>();
Collection<String> temp=new ArrayList<>();
Collection<String> del=new ArrayList<>();
Collection<String> mainTain=new ArrayList<>();
mainTain.add("lily");
mainTain.add("lucy");
mainTain.add("uncle_wang");
mainTain.add("xiao_feng");
mainTain.add("xiao_huang");
del.add("lily");
del.add("uncle_wang");
collection.add("lucy");
collection.add("lily");
collection.add("poly");
collection.add("uncle_wang");
temp.add("uncle_wang");
temp.add("poly");
temp.add("lily");
temp.add("li_lei");
collection.addAll(temp);
System.out.println("原collection集合:");
for (String i : collection) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("======================");
collection.remove("poly");
System.out.println("删除poly后的collection集合:");
for (String i : collection) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("======================");
collection.removeAll(del);
System.out.println("删除与del集合中相同的元素后的collction集合:");
for (String i : collection) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("======================");
System.out.println("原mainTain集合:");
for (String i : mainTain) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("使用retainAll后的mainTain集合:");
mainTain.retainAll(del);
for (String i : mainTain) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("======================");
}
}
将集合转成特定类型的数组
String[] ret = collection.toArray(new String[0]);
Integer[] ret = collection.toArray(new Integer[0]);
Double [] ret = collection.toArray(new Double[0]);
Object[] array = collection.toArray();
以上是关于集合——Collection的主要内容,如果未能解决你的问题,请参考以下文章
阶段1 语言基础+高级_1-3-Java语言高级_04-集合_01 Collection集合_5_迭代器的代码实现
JavaScript HTML DOM 集合(Collection)