TreeMap traversal
public class Eee { public static void main(String[] args) { TreeMap<String, Integer> treeMap = new TreeMap<>(); treeMap.put("s", 2); treeMap.put("w", 3); treeMap.put("d", 1); treeMap.put("f", 0); treeMap.put("h", 9); treeMap.put("q", 11); treeMap.put("a", 25); //traverse 1 System.out.println("====================== Traverse one =================== ====="); Iterator<String> it1 = treeMap.keySet().iterator(); while(it1.hasNext()){ String key = it1.next(); Integer value = treeMap.get(key); System.out.println("key=" + key + " ; " + "value=" + value); } //traverse two System.out.println("====================== Traversal two =================== ====="); Iterator<Entry<String, Integer>> it2 = treeMap.entrySet().iterator(); while(it2.hasNext()) { Entry<String, Integer> entry = it2.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("key=" + key + " ; " + "value=" + value); } } }
======================= Traverse a ========================= key=a ; value=25 key=d ; value=1 key=f ; value=0 key=h ; value=9 key=q ; value=11 key=s ; value=2 key=w ; value=3 ======================= Traversal two ========================= key=a ; value=25 key=d ; value=1 key=f ; value=0 key=h ; value=9 key=q ; value=11 key=s ; value=2 key=w ; value=3
TreeMap is sorted by key
Same below
TreeMap is sorted by value
public class Eee { public static void main(String[] args) { TreeMap<String, Integer> treeMap = new TreeMap<>(); treeMap.put("s", 2); treeMap.put("w", 3); treeMap.put("d", 1); treeMap.put("f", 0); treeMap.put("h", 9); treeMap.put("q", 11); treeMap.put("a", 11); //treeMap in put(), the bottom layer will compareTo according to the key ascending order System.out.println("treeMap = " + treeMap); // sort by value List<Map.Entry<String, Integer>> entryArrayList1 = new ArrayList<>(treeMap.entrySet()); Collections.sort(entryArrayList1, Comparator.comparing(Map.Entry::getValue)); System.out.println("entryArrayList1=" + entryArrayList1); // Sort two by value List<Map.Entry<String, Integer>> entryArrayList2 = new ArrayList<>(treeMap.entrySet()); Collections.sort(entryArrayList2, (o1, o2) -> o1.getValue().compareTo(o2.getValue())); System.out.println("entryArrayList2=" + entryArrayList2); // Sort three by value List<Map.Entry<String, Integer>> entryArrayList3 = new ArrayList<>(treeMap.entrySet()); Collections.sort(entryArrayList3, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o1.getValue().compareTo(o2.getValue()); } }); System.out.println("entryArrayList3=" + entryArrayList3); //The sorting in treeMap has not changed, it has become just an Arraylist with treeMap installed System.out.println("treeMap = " + treeMap); } }
treeMap = {a=11, d=1, f=0, h=9, q=11, s=2, w=3} entryArrayList1=[f=0, d=1, s=2, w=3, h=9, a=11, q=11] entryArrayList2=[f=0, d=1, s=2, w=3, h=9, a=11, q=11] entryArrayList3=[f=0, d=1, s=2, w=3, h=9, a=11, q=11] treeMap = {a=11, d=1, f=0, h=9, q=11, s=2, w=3}