一、规则集
首先:在测试一个元素是否在规则集或者线性表的方面,规则集比线性表高效。不过线性表的元素可以使用索引下标访问,规则集只能用foreach遍历。
1、HashSet
实现了Set接口的具体类,可由无参构造创建,或者使用一个现有集合创建。默认容量大小16,负载系数0.75。随着内容增加而自动扩充容量。
用来存储不重复的元素,但规则集中的元素没有特定顺序,跟元素插入集合的顺序无关。如要强加顺序,则使用LinkedHashSet类。
Set<?> set = new HashSet<>();
2、LinkedHashSet
使用一个链表实现来扩展HashSet类。其中元素可以按照插入规则集的顺序排序,但没有HashSet高效。
Set<?> set = new LinkedHashSet<>();
3、TreeSet
可使用无参构造创建,或使用现有的set集合创建。其中元素按照元素大小进行排序。
Set<String> set=new java.util.HashSet<>();
TreeSet<String> treeSet = new TreeSet<>(set); //从集合创建
TreeSet<String> treeSet1 = new TreeSet<>();//无参构造
treeSet1.addAll(set);
二、映射
使用HashMap、LinkedHashMap、TreeMap这个三个具体类创建映射。
映射是一种存储“键值对”集合的容器对象,键可以是任何数据类型,但不能重复。
1、HashMap
HashMap类对于定位一个值、插入一个条目,删除一个条目而言是十分高效的。
2、LinkedHashMap
LinkedHashMap用链表扩展了HashMap类,支持映射中的排序,有两种排序方法。
①、插入排序:按照插入顺序排序。
②、访问顺序:按照最后一次被访问的顺序。从最早到最晚。
无参构造方法以 插入顺序 创建链式散列映射LinkedHashMap,如需使用访问顺序则使用构造方法:LinkedHashMap(initialCapacity,loadFactor,true)
3、TreeMap
TreeMap对应的是按照 键 排好顺序的映射,遍历高效。