[2025.1.13 JavaSE学习]集合-8(TreeSet &&TreeMap)

TreeSet

特点

  • TreeSet和HashSet处于同一级,也实现了Set接口
  • TreeSet不同于HashSet的无序和LinkedHashSet的有序,无参构造时默认是key的compareTo进行比较,下面的情况便是按照String.compareTo()排列
@SuppressWarnings({"all"})
public class TreeSet_{
	public static void main(String[] args){
		TreeSet treeSet = new TreeSet();
		treeSet.add("jack");
		treeSet.add("tom");
		treeSet.add("sp");
		treeSet.add("a");
		System.out.println(treeSet);
		//输出为[a, jack, sp, tom]
	}
}
  • 有参构造,自定义排列顺序,使用一个匿名内部类作为比较器!!!当return结果为0时候,只是setValue,不进行添加):
TreeSet ts = new TreeSet(new Comparator(){
	//重写Comparator中的compare方法
	@Override
	public int compare(Object o1, Object o2){
		return ((String)o1).compareTo((String)o2);
	}
})
  • TreeSet底层构造器代码(说明TreeSet底层实际上是TreeMap)
public boolean add(E e){
	return m.put(e, PRESENT)==null;
	//此处使用PRESENT作为占位符,实际上调用的是TreeMap的put方法
}
public TreeMap(Comparator<? super K> comparator){
	this.comparator = comparator;
}

TreeMap

特点

  • 实现了Map接口,和HashMap和Hashtable处于同一级
  • 无参构造时默认是key的compareTo进行比较
  • 和TreeSet相似,也可以有参构造,自定义排列顺序,使用一个匿名内部类作为比较器
posted @ 2025-01-14 03:59  Luna-Evelyn  阅读(26)  评论(0)    收藏  举报