TreeSet
比较器:在构造TreeSet类的时候,可以自定义比较器进行比较
TreeSet(Compartor<? Super E> compartor)
案例:按照字符串长度进行第一排序,然后再按照内容排序:
import java.util.Comparator;
import java.util.TreeSet;
public class Demo9_TreeSet {
/*
* 将字符串按照长度排序
* */
@SuppressWarnings("unused")
public static void main(String[] args) {
TreeSet<String> ts = new TreeSet<>(new CompareByLen());
ts.add("aa");
ts.add("ab");
ts.add("aaa");
ts.add("cd");
ts.add("cba");
System.out.println(ts);
}
}
class CompareByLen implements Comparator<String>{
@Override
public int compare(String s1, String s2) {
int num = s1.length() - s2.length(); //长度为主要条件
return num == 0 ? s1.compareTo(s2) : num; //内容为次要条件
}
}
输出:
[aa, ab, cd, aaa, cba]
TreeSet总结:
特点:TreeSet是用来排序的,可以指定一个顺序,对象存入后会按照指定的顺序排列。
使用方式:
- 自然排序(类要实现Comparable接口的compareTo方法)
存入对象时,调用对象的compareTo()方法和集合中的对象比较,根据compareTo()方法的结果进行存储。 - 比较器顺序(Comparator)
创建TreeSet的时候可以制定一个实现Comparator接口的比较器类,然后在传入对象的时候会自动调用Comparator接口中的compare()方法进行排序。