java TreeSet - 不删除重复的项目
TreeSet 删除具有相同 Comprator 值的不同项目。我不希望它被删除。 有什么办法可以控制这个吗?或者使用另一个容器类?
额外: 好的。看来我不能使用Set。 出于性能考虑,我需要插入排序功能。列表可以做到这一点吗?谢谢大家。
TreeSet removes different items with the same Comprator value. I don't want it be removed.
Is there any way to control this? Or use another container class?
Added:
OK. It seems I can't use Set.
I need insert sorting feature, for performance consideration. Can List do this? Thanks all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
根据定义,集合不能有重复的条目。
所以你需要使用列表或数组等
A set by definition can not have duplicate entries.
So you need to use a List or Array or such
即使它是一个集合,这仍然令人困惑,因为对象是不同的。例如,不同对象。在这两种情况下,它都是一个集合,但存储的元素集合会不同。在我看来,文档中没有很好地阐明这一点。
E
的Set
在转换为基于TreeSet
时会删除一些对象>使用比较器一个简单的解决方案,如果你可以改变Comparator,让它不返回0。例如代替:
使用:
Even it is a set, this is still confusing because the objects are different. For example, a
Set<E>
of different objectsE
will drop some objects when converted to aTreeSet<E>
based on theComparator<E>
used. In both cases, it is a set, but the set of elements stored will be different. In my opinion this is not clarified well in the docs.A simple solution, if you can change the Comparator, let it not return 0. For example instead of:
Use:
Set
的主要用途 就是不有重复项。您要么不需要
Set
,要么需要不同的Comparator
。A main purpose of a
Set
is to not have duplicates.You either don't want a
Set
or you need a differentComparator
.Set 的 Javadoc 的引用:
使用 List< 的任何派生类/a>.
A quote from Javadoc for Set:
Use any derivative of List.
例如,如果您想要一个 SortedList,您可以获取一个列表并在每次插入后手动调用 Collections.sort() 。
或者你包装一个 ArrayList 以确保你的排序调用:
我希望我得到了所有需要排序的函数。 (无需删除即可覆盖)
If you want a SortedList you can for example take a list and manually call Collections.sort() after each insert.
Or you wrap e.g. an ArrayList to ensure the sort-calls for you:
I hope I got all functions which can require sorting. (Remove is not necessary to override)