本文主要是介绍Java重修笔记 第四十八天 TreeSet 类、TreeMap 类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
TreeSet 类
1. TreeSet 底层是 TreeMap
2. 使用默认构造器创建的 TreeSet 对象,添加顺序和取出顺序不是有序的
3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序
4. 可以在构造器中传入一个 Comparator 比较器来手动制定比较规则,之后传入的数据会根据改规则自动进行比较排序,如果根据比较器比较出的结果是相同的,即 compare() 方法返回0的话,判定相同的元素则不会添加到 TreeSet 中,这点尤为重要!
public class TreeSet01 {@SuppressWarnings("all")public static void main(String[] args) {TreeSet treeSet = new TreeSet(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {String s1 = (String) o1;String s2 = (String) o2;return s1.compareTo(s2);}});treeSet.add("jack");treeSet.add("tom");treeSet.add("sp");treeSet.add("bbb");treeSet.add("ccc");treeSet.add("a");treeSet.add("sp");System.out.println("treeSet = " + treeSet);}
}
运行结果:
3. TreeSet 类实现了 Set 接口,所以有着 Set 接口的特性,例如添加的值不可重复
-
TreeMap 类
1. 经过比较器比较,相同的 key 添加进去,会把旧的 value 替换为新的 value
2. Key 和 Value 以 Entry 结点的方式存储在 TreeMap 中
3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序
public class TreeMap01 {@SuppressWarnings("all")public static void main(String[] args) {TreeMap treeMap = new TreeMap(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {return ((String) o1).length() - ((String) o2).length();}});treeMap.put("Jack", "杰克");treeMap.put("Tom", "汤姆");treeMap.put("Smith", "史密斯");treeMap.put("Super_Minion", "超级兵");treeMap.put("Alice", "替换"); // 替换System.out.println(treeMap);}
}
运行结果:
这篇关于Java重修笔记 第四十八天 TreeSet 类、TreeMap 类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!