java---TreeSet集合

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);

效果展示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44889894/article/details/111625952