繁体   English   中英

在Java中创建唯一值列表

[英]Create a List of unique values in java

我得到的数据的顺序与其唯一元素一样重要。 意味着如果已经添加了某些内容,则不应再次添加,必须记住该顺序。

Set不会记住添加它的顺序(哈希或排序),并且List不是唯一的。

解决此问题的最佳方法是什么?

是否应该有一个列表并遍历整个列表以测试唯一性-我想避免这种情况? 还是应该有两个集合,一个是列表,一个是集合-我也想避免这样做? 还是对这个问题有完全不同的解决方案。

在下面的代码中供您参考

 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

使用LinkedHashSet 它既充当列表又充当集合。 它具有集合的唯一性,但仍会记住您向其中插入项目的顺序,这使您可以按插入顺序对其进行迭代。

从文档中:

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

您可以使用SortedSetLinkedHashSet

LinkedHashSet是最好的出路

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM