打印没有重复的ArrayList元素

时间:2014-08-28 11:41:07

标签: java arraylist duplicates

我有ArrayList个数字重复:

1
2
3
1
2
4

我想要做的是让程序打印1,2,3,4并忽略已经打印的整数。

我通常采用的方法是使用for循环遍历ArrayList,但我正在努力阻止元素重复。我当时认为某种类型的计数器系统可能会在这里起作用,但我不确定它的实现,所以任何帮助都会受到赞赏。

4 个答案:

答案 0 :(得分:5)

在迭代和打印时,在HashSet中累积元素,测试add的返回值:

if (set.add(item)) printItem(item);

答案 1 :(得分:3)

您可以使用Set轻松完成此操作,而无需迭代。

  • 如果您想保持自然顺序,请使用TreeSet
  • 如果要保留广告订单,请使用LinkedHashSet

示例

List<Integer> numbers = Arrays.asList(2,1,3,3,4,1,2,5);
System.out.printf("Natural ordering: %s%n", new TreeSet<Integer>(numbers));
System.out.printf("Ordering based on insertion order: %s%n", new LinkedHashSet<Integer>(numbers));

<强>输出

Natural ordering: [1, 2, 3, 4, 5]
Ordering based on insertion order: [2, 1, 3, 4, 5]

答案 2 :(得分:0)

如果序列不重要,请将列表转换为集合然后打印。
否则,例如在遍历期间维护第二个列表,如果之前没有出现并将其打印出来,则将每个元素添加到其中,如果它在清单中,则跳过它。

答案 3 :(得分:0)

首先转换列表进行设置然后再打印。如果订单不重要,那么您可以使用HashSet

  List<Integer> list = new ArrayList<>();
  list.add(1);
  list.add(2);
  list.add(3);
    list.add(1);
  Set<Integer> set = new HashSet<>(list);
  for(Integer number : set){
      System.out.println(number);
  }

这将只打印唯一的数字。

只需替换为TreeSet即可获得有序集。