Java计算一个数组的所有值并将其存储在一个数组中
问题描述:
我想计算一个数组的值并将其保存到一个数组中。在php中,我们使用array_count_values来完成此操作。Java计算一个数组的所有值并将其存储在一个数组中
$a=array("A","Cat","Dog","A","Dog");
print_r(array_count_values($a));
输出:
Array ([A] => 2 [Cat] => 1 [Dog] => 2)
我想在java中这样做。 Java代码的
Map<String, String[]> map = request.getParameterMap();
String[] wfBlockIds = map.get("wf_block_id[]");
Arrays.stream(wfBlockIds)
.collect(Collectors.groupingBy(s -> s))
.forEach((k, v) -> System.out.println(k+" => "+v.size() + " --" + v));
输出是:
1469441140125 => 3 --[1469441140125, 1469441140125, 1469441140125]
1469441126299 => 2 --[1469441126299, 1469441126299]
如何我会得到相同的结果为array_count_values(),这将是一个数组。
答
试试下面的代码:
Map<String, Integer> map = new HashMap<>();
for (String s : array) {
if (map.containsKey(s)) {
Integer v = map.get(s);
map.put(s, v+1);
} else {
map.put(s, 1);
}
}
答
你的代码是好的,但你是从请求参数获取字符串数组包含3 *“1469441126299”和2 *“1469441140125”; 打印出你的request.getParameterMap(),你会看到
+0
尝试使用request.getParameter(“wf_block_id []”)而不调用parameterMap – Elgayed
答
除了Java数组只有int索引,你可以通过Map实现和PHP一样的功能。
下面的代码生成类似于array_count_values
Map<String, Long> result = Stream.of("A", "Cat", "Dog", "A", "Dog")
.collect(groupingBy(Function.identity(), counting()));
System.out.println(result); //prints {A=2, Cat=1, Dog=2}
你想要的输出类型是什么东西?一个什么样的数组? – Eran
输出将是包含wfBlockIds array.Array([A] => 2 [Cat] => 1 [Dog] => 2)元素的数组。 –
请更新您的问题,而不是将注释放在注释中。 – GhostCat