[英]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中。)
您可以使用SortedSet或LinkedHashSet
LinkedHashSet是最好的出路
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.