集合介绍
集合,集合是java中提供的一种容器,可以用来存储多个数据。
在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据。那么,集合和数组既然都是容器,它们有啥区别呢?
数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据
ArrayList集合存储元素
我们来回顾下,使用ArrayList集合存储元素并遍历的过程。
练习一:ArrayList集合存储5个int类型元素
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(111);
list.add(222);
list.add(333);
list.add(444);
list.add(555);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
}
练习二:ArrayList集合存储5个Person类型元素
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<Person>();
list.add(new Person("小强"));
list.add(new Person("老王"));
list.add(new Person("小虎"));
list.add(new Person("小泽"));
list.add(new Person("小红"));
for(int i=0; i<list.size(); i++){
Person p = list.get(i);
System.out.println(p);
}
}
集合的继承实现关系
查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List(有序),而List接口又继承了Collection接口。Collection接口为最顶层集合接口了。 采集,聚集
源代码:
interface List extends Collection {
}
public class ArrayList extends AbstractList implements List{
}
这说明我们在使用ArrayList类时,该类已经把所有抽象方法进行了重写。那么,实现Collection接口的所有子类都会进行方法重写。
Collection接口常用的子接口有:List接口、Set接口
List接口常用的子类有:ArrayList类、LinkedList类
Set接口常用的子类有:HashSet类、LinkedHashSet类
Set无序 List 有序
Collection接口概述
既然Collection接口是集合中的顶层接口,那么它中定义的所有功能子类都可以使用。查阅API中描述的Collection接口。Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
继续查阅API,发现Collection接口中很多集合的操作方法,那么这些方法都具体能做什么呢?
Collection接口的基本方法
这里我们不关心具体创建的Collection中的那个子类对象,这里重点演示的是Collection接口中的方法。
创建集合的格式:
方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>();
方式2:Collection 变量名 = new ArrayList();
方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式
方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。
演示Collection接口中的方法
//创建集合
Collection coll = new ArrayList();
//1,往集合中添加对象元素。add(E e)方法,E代表创建集合时所指定的数据类型如<String>,那么,E就代表String类型;创建集合时若没有指定数据类型,那么,E就代表Object类型。
coll.add("abc");
coll.add("ef");
coll.add("g");
//把集合打印一下。
System.out.println(coll); //打印结果为:[abc, ef, g]
System.out.println(coll.toString()); //打印结果为:[abc, ef, g]
//2,从集合中删除元素。remove(Object o)方法
coll.remove("ef");
//删除后,集合元素为[abc, g]
//3,判断集合中是否包含指定元素。contains(Object o)方法(在List集合中依据equals方法,在Set集合中依据hashcode()与equals()方法)
System.out.println(coll.contains("abc"));
//打印结果为true
System.out.println(coll.contains("ef"));
//打印结果为false
//4,获取集合元素个数。size()方法
System.out.println(coll.size());
//打印结果为2
//5,返回包含集合中所有元素的数组。toArray()方法
String[] array = coll.toArray();
//数组中的元素为{"abc", "g"}
//6,清除集合元素。remove()方法
coll.clear();清空的是内容
//清空后,集合元素为[],代表没有元素