【问题标题】:Collection with prevent duplicate record and sort具有防止重复记录和排序的集合
【发布时间】:2018-04-13 12:08:00
【问题描述】:

据我了解,Set 可以帮助防止重复记录,但不能排序。

如果使用List,则可以排序,但不能防止重复记录。

如果我使用TreeSet,那么我的TreeSet 中的对象必须实现Comparable,这需要在我的项目中进行大的更改,如果可能的话,我不想更改它。

也许我可以将Set 转换为List,然后对其进行排序。但是,我的程序following有点复杂,意味着在我排序之后,我仍然需要在这个list中添加对象,同时我想防止重复,所以,要做到这一点,我有将排序后的List再次转换为Set,然后只在里面添加新对象。

我想寻求一种方法,可以使我的集合根据对象值进行排序,同时防止重复记录。

希望我没有问错问题。

【问题讨论】:

  • 您将如何对您的列表进行排序?
  • @shmosel,我想根据我的对象中的值对其进行排序。比如对象调用payment,那么我就按照paymentId排序,或者按照reference number排序,比如
  • 但是如何?我的意思是,无论您使用什么来对列表进行排序,都应该能够用于 TreeSet。
  • @shmosel ,起初我没有将 Comparable 传递给我的 TreeSet 对象,所以我认为 TreeSet 对象首先必须实现 Comparable 。但是现在我将 Comparator 传递给我的 TreeSet 并解决了我的问题。 :)

标签: java list collections set treeset


【解决方案1】:

TreeSet 似乎最适合您的要求。

如果我使用 TreeSet,那么我的 TreeSet 中的对象必须实现 Comparable

那不是真的。 TreeSet 不需要你的元素类型来实现Comparable。您可以将 Comparator 传递给 TreeSet 构造函数。

由于您的元素类型没有实现Comparable,因此如果您要对List 进行排序,则无论如何都需要Comparator,因此不要对List 进行排序,而是使用ComparatorTreeSet

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多