刷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());
暂时先写到这里,后面会继续补充的。