刷leetcode的時候,經常性碰到需要使用HashMap或者TreeMap的場景,今天來總結一些它們的用法:
TreeMap
public class MapCase {
public static void main(String[] args) {
HashMap<Integer,Integer> maphash = new HashMap<>();
TreeMap<Integer,Integer> maptree = new TreeMap<>();
maptree.put(1,12);
maptree.put(2,15);
maptree.put(3,13);
maptree.put(4,16);
maptree.put(5,10);
}
}
首先是如何遍歷上面的TreeMap ?
// 遍歷
Iterator iter0 = maptree.entrySet().iterator();
while (iter0.hasNext()){
Map.Entry entry =(Map.Entry) iter0.next();
System.out.print("鍵:"+ entry.getKey());
System.out.println(" 值: "+entry.getValue());
}
其次,如果要按照value倒序輸出,該怎麼設計? 因爲TreeMap底層是紅黑樹,所以決定了從本身構建來考慮是不行的,所以另闢蹊徑,我們嘗試把它放到list中,對list排序規則進行更改。
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(maptree.entrySet());
Collections.sort(list, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));
System.out.println("倒序:");
for(int i = 0; i<list.size(); i++)
System.out.println("鍵: "+list.get(i).getKey()+ "值:"+ list.get(i).getValue());
暫時先寫到這裏,後面會繼續補充的。