集合类又称容器,用来存放对象的引用。集合可以存储多个对象,对外作为一个整体存在
Collection接口
Collection接口: 存储一组 不唯一 , 无序 的对象。
概念: Collection接口是层次结构中的接口,通常不能直接使用。List接口和Set接口都继承了Collection接口,所以对List集合与Set集合通用。
遍历集合通常使用 迭代器(Iterator) 实现。Collection接口中的iterator()方法可返回在此Collection进行迭代的迭代器。
List集合
List接口: 存储不唯一、 有序 的对象。
ArrayList类: 线性表中的顺序表,实现了可变的数组。
LinkedList类:线性表中的链表,实现了双向链表。
Set集合
Set接口:存储唯一、无序的对象。
HashSet类: 基于哈希表的Set接口实现,速度快。 (无序)
LinkHashSet类: 采用哈希表存储结构的同时利用链表实现次序。 (有序)
TreeSet类: 采用二叉树(红黑树)的存储结构,速度较快。 (有序)
TreeSet集合存储类,类必须实现Comeparable接口(Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。)
Map集合
Map接口: Map接口存储一组 键值 对象(键:所存值的编号;值:所存值的数据),未继承Collection接口,但提供了 key(唯一) 到 value(不唯一) 的映射。
每个key只能映射一个value,key还决定了存储对象在映射中的存储位置。
import java.util.*;
public class EmpMap {
public static void main(String[] args) {
Map<String, String> M = new HashMap<>();
Emp E1 = new Emp("1", "A");
Emp E2 = new Emp("2", "B");
Emp E3 = new Emp("3", "C");
Emp E4 = new Emp("4", "D");
Emp E5 = new Emp("5", "E");
M.put(E1.ID,E1.Name);
M.put(E2.ID,E2.Name);
M.put(E3.ID,E3.Name);
M.put(E4.ID,E4.Name);
M.put(E5.ID,E5.Name);
Set<String> S=M.keySet();
Collection <String>C=M.values();
Iterator<String>it=S.iterator();
Iterator<String>is=C.iterator();
System.out.println("HashMap类实现的Map集合:");
while(it.hasNext())
{
System.out.println(it.next()+" "+is.next());
}
System.out.println("HashMap类的Key:");
System.out.println(M.keySet());
System.out.println("HashMap类的Value:");
System.out.println(M.values());
System.out.println("Map类:");
System.out.println(M);
}
}
class Emp{
protected String ID;
protected String Name;
public Emp(String ID,String Name){
this.ID=ID;
this.Name=Name;
}
}
输出结果:
HashMap类: 基于哈希表的Map接口的实现,速度快。(无序)
LinkedHashMap类: 基于哈希表的Map接口的实现,同时利用链表实现次序。(有序)
TreeMap类: 基于二叉树(红黑树)的Map接口的实现,不仅实现了Map接口,还实现了java.util.SortedMap接口,使得元素有一定的顺序。(有序)