【问题标题】:Create a List of unique values in java在java中创建一个唯一值列表
【发布时间】:2016-02-09 11:12:17
【问题描述】:

我有数据,其中的序列与其独特元素一样重要。这意味着如果已经添加了某些内容,则不应再次添加,并且必须记住顺序。

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

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

是否应该有一个列表并循环遍历它以测试唯一性 - 我试图避免这种情况? 或者一个人应该有两个集合,一个是列表,一个是集合——我也试图避免这种情况? 或者是否有完全不同的解决方案来解决这个问题。

【问题讨论】:

标签: java list set unique


【解决方案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

【讨论】:

    【解决方案2】:

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

    来自文档:

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

    【讨论】:

      【解决方案3】:

      您可以使用SortedSetLinkedHashSet

      【讨论】:

        【解决方案4】:

        LinkedHashSet 是最好的出路

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-23
          • 1970-01-01
          • 2020-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多