展开全部
可以存放重复的,关键是看的比较器,只是一般不这么做而62616964757a686964616fe59b9ee7ad9431333366303834已,保留重复就失去set集合无重复的特点。TreeSet ts = new TreeSet<>(new Comparator() {
@Override
public int compare(String s1, String s2) {
int num = s1.compareTo(s2); //比较内容为主要条件
return num == 0 ? 1 : num; //保留重复
}
});
ts.add("lp");
System.out.println(ts);
ts.add("lp");
System.out.println(ts);
输出结果:
[lp]
[lp, lp]
一个有趣的例子,TreeMap的键值,如果按照上面那样,是否也会重复,那key重复,又如何查询到对应的value,其实所谓的“重复”,按照比较器的定义,即使是相同的也认为是“不同”了。 感兴趣可以看下TreeMap 里面 get方法的源码,从源码可以分析到,“重复的key”用get方法获取的值肯定是null。