一、集合-Queue接口
PriorityQueue(优先队列) 是实现Queue接口的一个类。
当元素添加到PriorityQueue时,它们按优先级顺序插入。(具有最高优先级就是首先被删除的元素)
PriorityQueue常见的操作:
offer:将一个元素按优先级顺序插入到合适的位置
poll:删除优先队列中具有最高优先级的元素 (队头)
peek:获得队列中具有最高优先级的元素,不删除它
clear:删除优先队列中的全部元素。
size:获得优先队列中的元素数量。
二、集合-Set接口
Set 接口继承 Collection 接口,它不允许集合中存在重复项。
所有原始方法都是现成的(来自Collection),没有引入新方法。
具体的 Set 实现类依赖添加的对象的 equals() 方法来检查等同性。
“集合框架”支持 Set 接口两种普通的实现:HashSet、TreeSet。
三、HashSet
主要的一个无重复的集合类,元素没有顺序,没有提供同步机制,后台使用HashMap实现。
四、TreeSet
内部用TreeMap实现。
TreeSet是一个有序集合,其中元素将按照升序排列,缺省是按照自然顺序进行排列,意味着 TreeSet中元素要实现Comparable接口。
也可以在构造TreeSet对象时,传递实现了 Comparator接口的比较器对象。
非同步的。
五、HashSet和TreeSet的比较
HashSet是基于Hash算法实现的,其性能通常都优于TreeSet。
通常都应该使用HashSet,在需要排序的功能时,才使用TreeSet。
一般说来,先把元素添加到 HashSet, 再把集合转换为 TreeSet 来进行有序遍历会更快。
六、集合-Map接口
Map 接口不是 Collection 接口的继承。而是从独立的用于维护“键-值”映射的接口层次结构入手。
该接口描述了从不重复的键到值的映射。
七、Hashtable类
Hashtable实现了Map接口,实现一个 key-value映射的哈希表。
任何非空(non-null)的对象都可作为 key或者value。
Hashtable是同步的。
添加数据使用put(key, value),取出数据使用get(key)。
八、ProPerties
Hashtable的子类,只能操作字符串,保存字符串的键/值对。
使用setProperty和getProperty方法来维护表。
具有“持久性”:意味着能将Properties对象写入输出流,并能通过输入流读取。常用于维护程序配置数据或者用户首选项。
九、HashMap
HashMap和Hashtable类似,提供程序员能够使用哈希运算而不必实现哈希表机制。
它与Hashtable不同之处在于: HashMap是非同步的,并且允许null, 即null value和null key。
十、TreeMap
其中的元素可以按照Key的自然顺序排列,也可以是由Comparator指定的顺序排列。
作为Key的类需要实现Comparable接口,基本操作的时间复杂度是log(n),非同步的。
十一、集合算法
Collections类提供了各级高性能的算法 (实现成静态方法),用于操作集合元 素。
用于操作List的:Sort、binarySeatch、reverse、shuffle、 fill、copy
用于操作Collections的:Min、max、addAll、frequency、 disjoint
十二、算法--排序Sort
排序List中的元素可以使用Sort算法,它必须实现Comparable接口。
List中的元素按照compareTo方法实现的自然顺序确定的。
自然序排序:eg.Collections.sort( list );
降序排序:eg.Collections.sort( list, Collections.reverseOrder() ); reverseOrder返回一个Comparator对象,它对集合进行逆序排序。
十三、Comparable实际例子
Comparable目的是让集合内部存在一个默认的比较规则。
public class User implements Comparable<Object> {
……
public int compareTo(Object o) {
return ……
}
public static void main(String[] args) {
……
Arrays.sort(users);
……
}
}
十三、Comparator实际例子
Comparator是在集合外部定义比较规则。
public class UserComparator implements Comparator<Object>{
public int compare(Object o1, Object o2) {
return ……
}
}
public class User {
……
public static void main(String[] args) {
……
Arrays.sort(users, new UserComparator());
……
}
}
十四、Shuffle算法
用于随机排序List元素。( 用随机排序算法洗牌 )
eg. Collections.shuffle( list );