首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中维护唯一列表?

如何在Java中维护唯一列表?
EN

Stack Overflow用户
提问于 2012-11-07 05:16:12
回答 5查看 270.7K关注 0票数 117

如何在Java中创建唯一/不同对象的列表(无重复)?

现在我使用HashMap<String, Integer>来做这件事,因为键被覆盖了,因此在最后我们可以得到HashMap.getKeySet(),它将是唯一的。但我相信应该有更好的方法来做到这一点,因为价值部分在这里被浪费了。

EN

回答 5

Stack Overflow用户

发布于 2014-12-15 02:23:51

我想在这里为最初的海报澄清一些事情,其他人已经暗示了,但没有真正明确地说明。当你说你想要一个唯一的列表时,这就是有序集的定义。Set接口和List接口之间的其他一些关键区别在于,List允许您指定插入索引。所以,问题是,你真的需要列表界面(例如,为了与第三方库兼容,等等),或者你能重新设计你的软件来使用Set界面吗?您还必须考虑如何处理接口。根据元素的索引查找元素很重要吗?你期望你的集合中有多少个元素?如果你要有很多元素,排序是重要的吗?

如果您确实需要一个只具有唯一约束的列表,可以使用Apache Common Utils类org.apache.commons.collections.list.SetUniqueList,它将为您提供列表接口和唯一约束。请注意,这会破坏List接口。但是,如果您需要按索引查找列表,您将从中获得更好的性能。如果您可以处理set接口,并且您有一个较小的数据集,那么LinkedHashSet可能是一个很好的选择。这取决于你的软件的设计和意图。

同样,每个集合都有一定的优点和缺点。一些快速插入但缓慢读取,一些快速读取但缓慢插入,等等。花相当多的时间阅读集合文档以充分了解每个类和接口的详细信息是有意义的。

票数 16
EN

Stack Overflow用户

发布于 2012-11-07 05:18:29

new HashSet<String>为例:

代码语言:javascript
复制
import java.util.HashSet;
import java.util.Set;

public class MainClass {
  public static void main(String args[]) {
    String[] name1 = { "Amy", "Jose", "Jeremy", "Alice", "Patrick" };

    String[] name2 = { "Alan", "Amy", "Jeremy", "Helen", "Alexi" };

    String[] name3 = { "Adel", "Aaron", "Amy", "James", "Alice" };

    Set<String> letter = new HashSet<String>();

    for (int i = 0; i < name1.length; i++)
      letter.add(name1[i]);

    for (int j = 0; j < name2.length; j++)
      letter.add(name2[j]);

    for (int k = 0; k < name3.length; k++)
      letter.add(name3[k]);

    System.out.println(letter.size() + " letters must be sent to: " + letter);

  }
}
票数 11
EN

Stack Overflow用户

发布于 2018-06-28 15:49:06

我不知道这有多有效,但在一个简单的上下文中对我来说是有效的。

代码语言:javascript
复制
List<int> uniqueNumbers = new ArrayList<>();

   public void AddNumberToList(int num)
    {
        if(!uniqueNumbers .contains(num)) {
            uniqueNumbers .add(num);
        }
    }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13259535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档