为了让大家对集合有个基本的框架感,所以先上一张集合的思维导图:
java里集合有两个,一个是Collection接口,另一个是Map接口。既然是接口那么就有实现接口的类,Map接口的实现类有TreeMap和HashMap,其中TreeMap里面的元素是有序存储的。HashMap里面的元素是按哈希碰撞算法产生的键值对存储的,类比于仓库存储来说,有相同的哈希值的元素如同有相同的房间号的货物会放在同一个房间,然后同一个房间的物品会有不同的唯一的序列号(即物品的房间号可能相同,但是物品序列号却不可以相同,是唯一的)。然后搜索的时候会先检查房间号再匹配物品序列号。
Collection接口有两个派生接口:Set接口和List接口,Set接口里面的元素是无序且不可重复的,Lis接口里面的元素是有序且可以重复的。实现List接口的实现类有ArrayList和LinkedList。Set接口的实现类为TreeSet和HashSet,其中TreeSet里面的元素是有序存储的。
下面给出Set的一个代码示例:
import java.util.*;
public class SetExample {
public static void main(String args[]) {
Set set = new HashSet();
set.add("BAAAAA");
set.add("EAAAAA");
set.add("FAAA");
set.add("EAAAAA");
set.add("CAAAA");
System.out.println(set);
Set sortedSet = new TreeSet(set);
System.out.println(sortedSet);
}
}
输出结果1:[FAAA,CAAAA,BAAAAA,EAAAAA],解释:这里默认优先输出长度短的,再考虑优先输出首字母小的,重复的只输出一次。
输出结果2:[BAAAAA,CAAAA,EAAAAA,FAAA],解释:这里优先输出首字母小的,重复的只输出一次。