java TreeSet - 不删除重复的项目

pen*_*001 11 java comparator treeset

TreeSet使用相同的Comprator值删除不同的项目.我不希望它被删除.有没有办法控制这个?或者使用另一个容器类?

补充:好的.好像我不能用Set.出于性能考虑,我需要插入排序功能.Can List可以这样做吗?谢谢大家.

Hei*_*upp 10

按定义设置不能有重复的条目.

所以你需要使用List或Array等


dee*_*imo 5

即使它是一个集合,这仍然令人困惑,因为对象是不同的.例如,一个Set<E>不同的对象E在转换为TreeSet<E>基于Comparator<E>使用的对象时会丢弃一些对象.在这两种情况下,它都是一个集合,但存储的元素集将是不同的.在我看来,这在文档中并未得到很好的澄清.

一个简单的解决方案,如果您可以更改比较器,则不要返回0.例如,而不是:

public int compare(Integer o1, Integer o2) {
    return o1.compareTo(o2);
}
Run Code Online (Sandbox Code Playgroud)

使用:

public int compare(Integer o1, Integer o2) {
    return o1 < o2 ? -1: 1;
}
Run Code Online (Sandbox Code Playgroud)