|
與SortedSet接口類似,SortedMap也是一個(gè)結(jié)構(gòu),待排序的Map,其一個(gè)比較常用的實(shí)現(xiàn)類是TreeMap。 TreeMap的put(K key, V value)方法在每添加一個(gè)元素時(shí),都會(huì)自動(dòng)排序。 構(gòu)造方法:
TreeMap()
使用鍵的自然順序構(gòu)造一個(gè)新的、空的樹(shù)映射。 TreeMap(Comparator<? super K> comparator) 構(gòu)造一個(gè)新的、空的樹(shù)映射,該映射根據(jù)給定比較器進(jìn)行排序。 TreeMap(Map<? extends K,? extends V> m) 構(gòu)造一個(gè)與給定映射具有相同映射關(guān)系的新的樹(shù)映射,該映射根據(jù)其鍵的自然順序 進(jìn)行排序。 創(chuàng)建自定義的Comparator比較器:
//這里根據(jù)字符的ASCII碼大小進(jìn)行降序排序:
class MyComparator2 implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}
在SortedSet中,當(dāng)保存對(duì)象時(shí)一定要自定義一個(gè)比較器Comparator,但是在SortedMap中,保存對(duì)象卻不一定要,因?yàn)镾ortedMap是比較Key而不是Value,所以創(chuàng)建的自定義比較器也是針對(duì)Key的,比如上面創(chuàng)建的Comparator是針對(duì)Key類型為String的Map進(jìn)行排序。
Map<String, String> map = new TreeMap<String, String>(new MyComparator2()); 對(duì)于TreeMap的迭代和HashMap一樣,同樣有三種方法,以下是常用的其中一種: Set<Map.Entry<Integer, Integer>> set = map.entrySet();
for(Iterator<Map.Entry<Integer, Integer>> iter = set.iterator(); iter.hasNext();){
Map.Entry<Integer, Integer> entry = iter.next();
Integer key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + ":" + value);
}
對(duì)于Map來(lái)說(shuō),不能使用Collections的靜態(tài)方法,但是可以通過(guò)他的values方法獲取到Collections進(jìn)行調(diào)用: Collection<Integer> cols = map.values(); Integer max = Collections.max(cols); |
|
|