Comparator接口的使用

package com.ding.mytreeset;

import java.util.TreeSet;
import java.util.Comparator;

public class Comparatortest {
    public static void main(String[] args) {
        //mehtod1();
        TreeSet<String> ts = new TreeSet<>(
                (String o1, String o2) -> {
                    int result = o1.length() - o2.length();
                    result = result == 0 ? o1.compareTo(o2) : result;
                    return result;
                }
        );

        ts.add("aaa");
        ts.add("ddd");
        ts.add("eee");
        ts.add("bbb");
        ts.add("ccc");
        ts.add("ccc");

        System.out.println(ts);

    }
    
    
    private static void mehtod1() {
        TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {
            public int compare(String o1, String o2) {

                int result = o1.length() - o2.length();
                result = result == 0 ? o1.compareTo(o2) : result;
                return result;
            }

        });

        ts.add("aaa");
        ts.add("ddd");
        ts.add("eee");
        ts.add("bbb");
        ts.add("ccc");
        ts.add("ccc");

        System.out.println(ts);
    }
}

  • 如果返回值-为负数,表示当前存入的元素是较小值,存左边
  • 如果返回值为0,表示当前存入的元素跟集合中元素重复了,不存
  • 如果返回值为正数,表示当前存入的元素是较大值,存右边
posted @ 2021-10-11 22:30  丁帅帅dss  阅读(52)  评论(0)    收藏  举报