使用Java的内置Set类来计算列表中的唯一值

时间:2013-08-06 21:58:54

标签: java list set

给定一个可能包含重复项的列表(如下所示),我需要能够计算唯一元素的数量。

List<String> list = new ArrayList<String>();
list.add("M1");list.add("M1");
list.add("M2");list.add("M2");
list.add("M3");list.add("M3");

我认为可以通过使用Java的Set来完成。如何将列表项复制到集合中,如何从集合中获取计数?

2 个答案:

答案 0 :(得分:4)

我希望我能正确理解这个问题。听起来你正在尝试使用java的Set类来计算ArrayList中唯一条目的数量。如果是这样,您需要:

  • 创建一个Set(你必须使用一个具体的类,我将在示例中使用HashSet)
  • 遍历ArrayList,并将这些项(在本例中为Strings)放入集合中。 (我将使用addAll方法)
  • 获取套装尺寸

示例:

List<String> list = new ArrayList<String>();
Set<String> set = new HashSet<String>();
list.add("M1");
list.add("M1");
list.add("M2");
list.add("M3");

set.addAll(list);
System.out.println(set.size());

编辑:此解决方案(出于实际目的)与Alexey的解决方案相同。 Alexey刚刚在编写解决方案时发布了。

答案 1 :(得分:3)

...
        List<String> list = new ArrayList<String>();
        list.add("M1");list.add("M1");
        list.add("M2");list.add("M2");
        list.add("M3");list.add("M3");

        HashSet hashSet = new HashSet();
        hashSet.addAll(list);
        System.out.println(hashSet.size()); 
...

它给出了 -

3