自定义比较器不工作的java树集

自定义比较器不工作的java树集,java,comparator,treeset,Java,Comparator,Treeset,我正试图掌握如何将自定义比较器与TreeSet结合使用。然而,似乎有什么不对劲。无论我是使用自定义的equals还是comparator的compare,我都会看到重复项。。你知道哪里出了错吗? 下面是代码:(请看下面的注释) import java.util.ArrayList; 导入java.util.Comparator; 导入java.util.TreeSet; 公共类树形图{ 公共静态void main(字符串[]args){ //取一个整数数组 int list[]={1,2,3,4

我正试图掌握如何将自定义比较器与TreeSet结合使用。然而,似乎有什么不对劲。无论我是使用自定义的equals还是comparator的compare,我都会看到重复项。。你知道哪里出了错吗? 下面是代码:(请看下面的注释)

import java.util.ArrayList;
导入java.util.Comparator;
导入java.util.TreeSet;
公共类树形图{
公共静态void main(字符串[]args){
//取一个整数数组
int list[]={1,2,3,4,2,4,2,5};
//创建自定义对象的列表
ArrayList元素=新的ArrayList();
//使用int数组中的值填充列表
用于(INTV:列表){
增加(新元素(v));
}
/**尝试从arraylist创建树集*/
//使用自定义比较器创建树集
TreeSet nt=新的TreeSet(新的比较器(){
公共整数比较(元素a、元素b){
System.out.println(“比较“+a.val+”和“+b.val”);
如果(a.val==b.val)
返回0;
如果((a.val-b.val)>0)
返回1;
返回-1;
}
});
//将元素添加到树集中
用于(元素元素:元素){
新界增补(elem);
}
//输出不应包含重复项
用于(元素元素:元素){
系统输出打印(“:”+元素值);
}
}
}
类元素{
公共国际价值;
元素(int v){
val=v;
}
//布尔等于(元素e){
//返回this.val==e.val;
//      
//  }
}

如果要再次打印
元素
列表,请将其更改为
nt
set

// Output shall not contain duplicates
for (Element elem: nt){
    System.out.print(":"+elem.val);
}

如果要再次打印
元素
列表,请将其更改为
nt
set

// Output shall not contain duplicates
for (Element elem: nt){
    System.out.print(":"+elem.val);
}