首先来明确一下关系
- 接口:用来明确所有集合中该具有的功能,相当于在定义集合功能标准;
- 抽象类:把多个集合中功能实现方式相同的方法,抽取到抽象类实现,具体集合不再遍写,继承使用即可;
- 具体类:继承抽象类,实现接口,重写所有抽象方法,达到具备指定功能的集合。每个具体集合类,根据自身的数据存储结构方式,对接口中的功能方法,进行不同方式的实现。
List接口
List接口常用的子类有:
ArrayList 和 LinkedList
ArrayList的存储结构是数组
LinkedList的存储结构是链表,他提供了大量的首尾操作的方法
LinkedList集合可以作为堆栈,队列使用,这在平时的使用中很重要
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> link=new LinkedList<String>();
link.addFirst("abc");//将元素插入到此列表的开头
link.add("abc2");//如果不指定,就会默认添加到尾部
link.addFirst("abc3");
// System.out.println(link.getFirst());
// System.out.println(link.getLast());
while(!link.isEmpty()){ //判断集合是否为空
System.out.println(link.pop()); //弹出集合中的栈顶元素
}
}
}
Set接口
Hashset
Hashset集合的储存数据的结构是哈希表
哈希表:当向哈希表中存储数据时,会会调用对象的hashCode方法,这个方法是Object类中的,计算出哈希码,两个一样的数据一定会算出一样的哈希码,但是两个不同的数据可