HashMap TreeMap专题

刷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());

暂时先写到这里,后面会继续补充的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章