1、集合介绍
对于保存多个数据使用的是数组,那么数组有不足的地方。比如,
-
长度开始时必须指定,而且一旦制定,不能更改。
-
保存的必须为同一类型的元素。
-
使用数组进行增加/删除元素的示意代码,也就是比较麻烦。
为了解决数组这些不足之处,那么就可以引出集合来处理。下面先说一下集合的好处。
-
可以动态保存任意多个对象,使用比较方便。
-
提供了一系列方便的操作对象:add、remove、set、get等。
-
使用集合添加或删除新元素,代码简洁。
集合体系图如下,Collection是单列接口,Map是双列接口。虚线可以看成实现关系,实线可以看成继承关系。
2、Collection接口实现类的特点
public interface Collection<E>extends Iterable<E>
-
Collection实现子类,可以存放多个元素,每个元素可以是Object。
-
Collection的实现类,有些是有序地(List),有些不是有序(Set)。
-
有些Collection的实现类,可以存放重复的元素,有些不可以。
-
Collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的。
3、Collection接口常用方法。
以实现子类ArraysList来演示。
方法总结:
add() // 添加单个元素
remove() //删除指定元素
contains() //查找元素是否存在
size() //获取元素个数
isEmpty() //判断是否为空
clear() //清空
addAll() //添加多个元素
contains All() //查找多个元素是否都存在
removeAll() //删除多个元素
//由于接口不能直接被实例化,只有实现了接口的类才能被实例化,所以这里我们使用ArrayList
//使用List接口接收
List list = new ArrayList();
//add() 添加单个元素
list.add("jack");
list.add("marry");
list.add("smith");
System.out.println(list);//[jack, marry, smith]
//remove() 删除指定元素
list.remove("jack");
System.out.println(list);//[marry, smith]
//contains() 查找元素是否存在
System.out.println(list.contains("jack"));//false
//size() 获取元素个数
System.out.println(list.size());//2
//isEmpty() 判断是否为空
System.out.println(list.isEmpty());//false
//clear() 清空
list.clear();
System.out.println(list.isEmpty());//true
//addAll() 添加多个元素
List list1 = new ArrayList();
list1.add(1);
list1.add("终极笔记");
list1.add("老九门");
list.addAll(list1);
System.out.println(list1);//[1, 终极笔记, 老九门]
// containsAll() 查找多个元素是否都存在
System.out.println(list1.containsAll(list1));//true
//removeAll() 删除多个元素
list1.removeAll(list1);//true
System.out.println(list1.size());//0