集合与防止重复记录和排序

时间:2017-11-01 07:48:45

标签: java list collections set treeset

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

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

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

也许我可以将Set转换为List,然后对其进行排序。但是,我的程序遵循有点复杂,意味着在我对其进行排序后,我仍然需要在此list内添加对象,同时,我想防止重复,所以,为此,我必须再次将已排序的List转换为Set,然后只在里面添加新对象。

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

希望我不会在此问错误。

1 个答案:

答案 0 :(得分:9)

TreeSet似乎最适合您的要求。

  

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

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

由于您的元素类型未实现Comparable,如果您要对Comparator进行排序,则无论如何都需要List,因此不会对{{1}进行排序},将ListComparator一起使用。