在Java中删除集合中重复的最佳方法?

kgr*_*rad 0 java arrays set

这是一个由两部分组成的问题:

首先,我很想知道从集合中删除重复元素的最佳方法是什么.到目前为止我一直在做的方法是简单地将集合转换为集合.我知道套装不能有重复元素所以它只是为我处理它.

这是一个有效的解决方案?循环和删除重复会更好/更惯用/更快吗?有关系吗?

我的第二个(相关)问题是:将数组转换为Set的最佳方法是什么?假设一个数组arr我一直这样做的方法如下:

Set x = new HashSet(Arrays.asList(arr));

这会将数组转换为列表,然后转换为集合.似乎有点迂回.与双转换方式相比,是否有更好/更惯用/更有效的方法?

谢谢!

Joh*_*ica 7

  1. 您是否有关于该集合的任何信息,例如它已经排序,或者它主要包含重复项或大多数独特项目?只有一个任意的集合,我认为将其转换为a Set是好的.

  2. Arrays.asList()没有创建一个全新的列表.它实际上只返回一个List使用数组作为其后备存储的东西,因此它是一个廉价的操作.所以你Set从数组中制作一个数组的方式也是如此.