获取嵌套ArrayList的频率

时间:2015-10-21 12:21:24

标签: java list arraylist collections

我有一个带有一些数字的嵌套ArrayList。

ArrayList<Integer[]> list = new ArrayList<Integer[]>();
list.add(new Integer[] { 1, 2, 3, 4 });
list.add(new Integer[] { 1, 2, 4 });
list.add(new Integer[] { 1, 2 });

我如何获得它们的频率?

使用:

System.out.println(Collections.frequency(list , 1));

我只获得0而不是3(在我的情况下)。

2 个答案:

答案 0 :(得分:1)

试试这个:

int count = 0;
for (Integer[] i: list) {
    count += Collections.frequency(Arrays.asList(i), 1);
}
System.out.println(count);   //3

答案 1 :(得分:1)

正确的java 8解决方案将如下所示:

System.out.println(list.stream().mapToInt(arr -> Collections.frequency(Arrays.asList(arr), 1)).sum());

如果您仍然使用java 6/7,则需要执行以下操作:

int sum= 0;
for (Integer[] arr: list) {
    sum+=Collections.frequency(Arrays.asList(arr), 1);
}
System.out.println(sum);