TreeSet集合
案例:
将一系列字符串“hello”,"helloworld","how","do","you","what"存入TreeSet集合,要求按照字符串长度进行排序
这里我们用外部比较器:
String a1="hello";
String a2="helloworld";
String a3="how";
String a4="do";
String a5="you";
String a6="what";
TreeSet<String> set = new TreeSet<String>((s1,s2)->s1.length()-s2.length());
//(s1,s2)->s1.length()-s2.length() 外部比较器
set.add(a1);
set.add(a2);
set.add(a3);
set.add(a4);
set.add(a5);
set.add(a6);
System.out.println(set);
不难发现,字符串中"you"丢失了(被覆盖了)
因此,我们需要进行判断,如果两个字符串长度相等,就将两个字符串默认一个长,这样就可以输出了
String a1="hello";
String a2="helloworld";
String a3="how";
String a4="do";
String a5="you";
String a6="what";
TreeSet<String> set = new TreeSet<>((s1,s2)->{
if (s1.length()!=s2.length()){
return s1.length()-s2.length();
}else {
return 1; //如果长度相等,TreeSet自带去重,就会只保留一个,
//因此这里将这种情况的 0 改为 1或-1 1 表示默认前面的字符串的长度大 -1表示默认后面的字符串的长度大
}
});
set.add(a1);
set.add(a2);
set.add(a3);
set.add(a4);
set.add(a5);
set.add(a6);
System.out.println(set);
效果展示