TreeSet案例
要求:根据字符串长度进行排序
使用Comparator接口进行定制排序规则
因为Comparator接口不能被new,所以通过匿名内部类实现排序规则的定制
注意:如果不使用匿名内部类,而是通过元素对象类型来实现定制排序规则的接口,则通过元素对象的类来实现Comparable接口,通过重写Comparable接口的compareTo()方法来定制排序规则
代码实现
/**
* TreeSet案例
* 要求:使用TreeSet集合实现字符串按照长度进行排序
* Comparator接口实现定制比较(比较器)
*/
public class Test2 {
public static void main(String[] args) {
//创建集合并且指定比较规则
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int n1 = o1.length()-o2.length();
int n2 = o1.compareTo(o2);
return n1==0?n2:n1;
}
});
//添加数据
treeSet.add("tianjing");
treeSet.add("tna");
treeSet.add("cat");
treeSet.add("catnamingass");
treeSet.add("nanjiing");
treeSet.add("HelloWorld!!kdfjdkalefk");
System.out.println(treeSet.toString());
//[cat, tna, nanjiing, tianjing, catnamingass, HelloWorld!!kdfjdkalefk]
}
}