【问题标题】:How to loop through ArrayList for different values in javajava - 如何遍历ArrayList以获取java中的不同值
【发布时间】:2017-01-28 01:46:45
【问题描述】:

我只是在练习java。

我有这个包含重复值的 ArrayList。

我想遍历这个列表,以便它可以按组打印这些重复值。

这是我的方法包含的内容。

ArrayList nomero = new ArrayList();

    nomero.add(1);
    nomero.add(1);
    nomero.add(2);
    nomero.add(2);
    nomero.add(3);
    nomero.add(3);


    for(int i=0; i<nomero.size(); i++){

        System.out.println(nomero.get(i));

    }

它的打印如下。

我想做的就是把它打印出来

请帮我解决这个问题。 谢谢。

【问题讨论】:

  • if value != lastValue print new line 所以基本上你需要知道最后一个“组”值,当它改变时,你打印一个新行

标签: java for-loop arraylist duplicates


【解决方案1】:

很简单,当前一个值与当前值不同时添加一个换行符。但是,您不应该使用raw types。你应该对List 进行排序(并且更喜欢接口而不是具体类型)。您可以使用Arrays.asList 来初始化您的List。类似的,

List<Integer> nomero = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3));
Collections.sort(nomero);
for (int i = 0; i < nomero.size(); i++) {
    if (i > 0 && nomero.get(i - 1) != nomero.get(i)) {
        System.out.println();
    }
    System.out.println(nomero.get(i));
}

【讨论】:

  • 很好的答案,我要疯了才能弄清楚这一点。简单而解释性的答案。非常感谢大家。
【解决方案2】:

因此,在非常基本的层面上,您需要知道“最后一个值”是什么,当它不再等于“当前值”时,您添加一个新行并将“最后一个值”更新为等于“当前值”

ArrayList<Integer> nomero = new ArrayList<>();

nomero.add(1);
nomero.add(1);
nomero.add(2);
nomero.add(2);
nomero.add(3);
nomero.add(3);

int lastValue = nomero.get(0);

for (int i = 0; i < nomero.size(); i++) {
    int nextValue = nomero.get(i);
    if (nextValue != lastValue) {
        System.out.println("");
        lastValue = nextValue;
    }
    System.out.println(nextValue);

}

这确实假设列表已经排序

【讨论】:

    【解决方案3】:

    Java 8 让它变得更简单...

    List<Integer> nomero = Arrays.asList(1, 1, 2, 2, 3, 3);
    Map<Integer, Long> map = nomero.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        for (Integer i : map.keySet()) {
            for (int j = 0; j < map.get(i); j++) {
                System.out.println(i);
            }
            System.out.println();
        }
    

    【讨论】:

      猜你喜欢
      • 2013-12-26
      • 2015-12-27
      • 2012-11-19
      • 2019-04-19
      • 2014-10-21
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 2013-09-23
      相关资源
      最近更新 更多