String类已经实现了Comparable接口,我们可以根据TreeSet提供的构造器传入自己的比较器。
public class Set4 {
public static void main(String[] args) {
Set<String> stringSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int len = s1.length() - s2.length();
int i = s1.compareTo(s2);
return len == 0 ? i : len;
}
});
// Set<String> stringSet = new TreeSet<>((s1,s2)->{
// int len = s1.length() - s2.length();
// int i = s1.compareTo(s2);
// return len == 0 ? i:len;
// });
stringSet.add("王小二");
stringSet.add("abc");
stringSet.add("df");
stringSet.add("xyz");
stringSet.add("a");
stringSet.add("sdf");
System.out.println(stringSet);
}
}
运行结果
[a, df, abc, sdf, xyz, 王小二]