java TreeSet能存放两个相同的元素吗?
3个回答
展开全部
可以存放重复的,关键是看的比较器,只是一般不这么做而已,保留重复就失去set集合无重复的特点。
TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {
@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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TreeSet 是set的子类,Set具有元素不可重复性,所以TreeSet也是,不可方2个相同的元素。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询