在java中创建唯一值列表

时间:2016-02-09 11:12:18

标签: java list set unique

我的数据序列与其独特元素一样重要。意思是如果已添加某些内容,则不应再次添加,并且必须记住该序列。

Set不记得添加它的顺序(散列或排序),而List不是唯一的。

这个问题的最佳解决方案是什么?

是否应该有一个列表并循环通过它来测试唯一性 - 我试图避免? 或者应该有两个集合,一个是List,另一个是Set - 我也试图避免? 或者是否完全解决了这个问题。

4 个答案:

答案 0 :(得分:1)

在下面的代码中是您的参考

 LinkedHashSet<String> al=new LinkedHashSet<String>();  
  al.add("guru");  
  al.add("karthik");  
  al.add("raja");  
  al.add("karthik");  

  Iterator<String> itr=al.iterator();  
  while(itr.hasNext()){  
   System.out.println(itr.next());  
  }  

<强>输出

guru
karthik
raja

答案 1 :(得分:0)

使用LinkedHashSet。它既可以作为列表也可以作为集合。它具有集合的唯一性质量,但仍会记住您向其中插入项目的顺序,这允许您按插入顺序进行迭代。

来自文档:

  

Set接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashSet的不同之处在于它维护了一个贯穿其所有条目的双向链表。此链接列表定义迭代排序,即元素插入集合(插入顺序)的顺序。请注意,如果将元素重新插入到集合中,则不会影响插入顺序。 (如果s.contains(e)在调用之前立即返回true,则调用s.add(e)时,将元素e重新插入到集合中。)

答案 2 :(得分:0)

您可以使用SortedSetLinkedHashSet

答案 3 :(得分:0)

LinkedHashSet是最好的出路