学习目标:会存取,掌握特性
学习方式:学习顶层接口/抽象类的共性方法,使用底层的子类创建对象使用
1 集合框架
集合类的继承体系:
Collection接口:
·············1) List接口:有序、允许重复、有索引
··························1.1) ArrayList集合【重点】
··························1.2) Vector集合【了解】
··························1.3) LinkedList集合【熟悉】
·············2) Set接口:不重复、无索引
··························2.1) TreeSet集合:无序(存取顺序可能不一致)【了解】
··························2.2) HashSet集合:无序【重点】
·······································2.2.1) LinkedHashSet集合:无序【熟悉】
集合 | 特点 |
---|---|
List | 有索引,可以存储重复元素,可以保证存取顺序 |
ArrayList | 底层是数组实现的,查询快,增删慢 |
LinkedList | 底层是链表实现的,查询慢,增删快 |
Set | 无索引,不可以存储重复元素,存取无序 |
HashSet | 底层是哈希表+红黑树实现,无索引,不可以存重复元素,存取无序 |
LinkedHashSet | 底层是哈希表+链表实现,无索引,不可以存重复元素,可以保证存取顺序 |
TreeSet | 底层是二叉树实现,一般用于排序 |
2 Collection集合常用功能
Collection是单列结合最顶层的接口,定义了单列集合共性方法,任意单列集合都可以使用
java.util.Collection:1. add(e); 2. remove(e); 3. inEmpty(); 4. clear(); 5. contains(e); 6. toArray(); 7. size()
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
//add添加元素
coll.add("a");
coll.add("b");
coll.add("c");
System.out.println(coll);//[a,b,c]
//remove删除元素
boolean result = coll.remove("a");
System.out.println(result);//删除结果:true
System.out.println(coll);//[b,c]
//clear清空集合
coll.clear();
System.out.println(coll);
//contains是否包含
coll.add("b");
boolean result2 = coll.contains("a");
System.out.println(result2);//flase
boolean result3 = coll.contains("b");
System.out.println(result3);//true
//isEmpty判断集合是否为空
System.out.println(coll.isEmpty());//false
//size获取集合长度
System.out.println(coll.size());//1
//toArray集合--->数组 遍历集合元素
Object[] arr = coll.toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);//打印Object对象 因为重写了toString 所以显示的是值而不是地址
}
}
3 Iterator迭代器
常用方法:1. hasNext()、2. next()
Iterator迭代器是一个接口,无法直接使用,需要使用Iterator接口的实现类对象
Collection中有一个iterator()方法,返回的是迭代器的实现类对象,list和set 通用,无需索引。
【重点】使用方式
- 使用iterator()方法获取实现类对象,使用Iterator接口接收(多态)
- 使用hasNext判断是否还有下一个
- 使用next取出下一个元素
实现原理:iterator()获取迭代器的实现类对象,会把指针(索引)指向集合-1索引处。hasNext()判断是否有下一个。next取出一个元素后,会把指针向后移动一位。
实现示例:
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("a");
coll.add("b");
coll.add("c");
coll.add("d");
coll.add("e");
//迭代器有泛型 跟着集合走
//多态 接口 实现类对象
Iterator<String> it = coll.iterator();