我需要将以下内容转换为Java 8,但是我不确定所需的语法。
val iterator = color.toList().iterator()
iterator.forEach { cols->
println("$cols count: " +
(numbers
.map{a -> colors[a]}
.count{it == (cols)})
)
}
从1-5中有30个数字,对应于一个字符串数组(颜色,在List arraylist中)
我必须计算每种颜色的出现次数,例如
green count:9
red count:3
这是我到目前为止所得到的
List<String> colors = new ArrayList<>();
//list filled
colors.stream().forEach(cols ->
System.out.println(cols + " count: " + numbers2
.mapToObj(i -> colorsarray[i])
.count()
));
但是它不打印任何内容。 colorsarray []是一个普通的String数组,其值与ArrayList相同,但是我制作了arraylist,因为我不知道如何对普通数组执行lambda操作。
答案 0 :(得分:2)
Kotlin的<repo_root>/.git/info/attributes
采用一个返回boolean的lambda作为参数,并且仅计算满足谓词的元素。您需要对出现的事件求和(过滤器思想来自@biziclop,谢谢):
count
答案 1 :(得分:2)
您可能需要将计数groupingBy
的颜色设置为:
List<String> input = new ArrayList<>(); // initialised with colors
Map<String, Long> colorCount = input.stream()
.collect(Collectors.groupingBy(i -> i, Collectors.counting()));
colorCount.forEach((k,v) -> System.out.println(k + " count: " + v));
答案 2 :(得分:0)
我假设您有这样的东西:
List<String> colors = Arrays.asList("blue","red", "green", "yellow", "black");
List<Integer> numbers = Arrays.asList(1,3,0,0,2,3,1,4,0,2,4,3,3,3,2,0);
与颜色列表中的索引相对应的数字列表中的值。如果是这样,请执行类似@Naman已经建议的操作:
Map<String, Long> colorCount = numbers.stream()
.collect(Collectors.groupingBy(i -> colors.get(i), Collectors.counting()));
colorCount.forEach((k,v) -> System.out.println(k + " count: " + v));