为什么这个treeSet 加了一个比较器就可以存储重复值了

package Work1;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class DictionariesDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("list");
        list.add("sum");
        list.add("list");
        list.add("avg");
        list.add("dictionaries");
        list.add("demo");
        ComparableStr comparableStr = new ComparableStr();
        comparableStr.sort(list);
        for(String li:list){
            System.out.println(li);
        }
    }
}

package Work1;
import java.util.Comparator;
import java.util.List;
import java.lang.String;
import java.util.TreeSet;
public class ComparableStr {
    public void sort(List<String> list){
        TreeSet<String> treeSet= new TreeSet<String>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int flag = o1.compareTo(o2);
                if(flag>=0){
                    flag=1;
                }
                return flag;
            }
        });
        treeSet.addAll(list);
        list.clear();
        list.addAll(treeSet);
    }


}

TreeSet一般要实现Comparable接口,如果没有实现这个接口那么就无法区分大小关系,且在TreeSet中如要进行排序,那就要将所有字段进行比较,就是说在TreeSet中是依靠comparato()方法返回的是不是0来判断是不是重复元素的,现在相同时返回了1相当于不是重复的;