Java计算数组的所有值并将其存储在数组中

Java计算数组的所有值并将其存储在数组中,java,arrays,Java,Arrays,我想计算一个数组的值,并将其保存到一个数组中。在php中,我们使用array\u count\u值进行计算 $a=array("A","Cat","Dog","A","Dog"); print_r(array_count_values($a)); 输出: Array ( [A] => 2 [Cat] => 1 [Dog] => 2 ) 我想用java来做 Map<String, String[]> map = request.getPar

我想计算一个数组的值,并将其保存到一个数组中。在php中,我们使用array\u count\u值进行计算

    $a=array("A","Cat","Dog","A","Dog");
    print_r(array_count_values($a));
输出:

    Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )
我想用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));

如何获得与数组中的数组\u count\u 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);
    }
}
Map Map=newhashmap();
for(字符串s:数组){
若有(地图集装箱箱){
整数v=map.get(s);
地图放置(s,v+1);
}否则{
地图.put(s,1);;
}
}

请尝试以下代码:

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);
    }
}
Map Map=newhashmap();
for(字符串s:数组){
若有(地图集装箱箱){
整数v=map.get(s);
地图放置(s,v+1);
}否则{
地图.put(s,1);;
}
}

您的代码很好,但从请求参数获取的字符串数组包含3*“146944112699”和2*“14694411425”;
打印出您的request.getParameterMap(),您将看到

您的代码很好,但是从request params获取的字符串数组包含3*“14694411299”和2*“14694411425”;
打印出您的request.getParameterMap(),您将看到

尽管Java数组只有int索引,但您可以通过映射实现与PHP中相同的功能

下面的代码生成类似于
array\u count\u值的内容

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}
Map result=Stream.of(“A”、“Cat”、“Dog”、“A”、“Dog”)
.collect(groupby(Function.identity(),counting());
系统输出打印项次(结果)//打印{A=2,Cat=1,Dog=2}

尽管Java数组只有int索引,但可以通过映射实现与PHP中相同的功能

下面的代码生成类似于
array\u count\u值的内容

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}
Map result=Stream.of(“A”、“Cat”、“Dog”、“A”、“Dog”)
.collect(groupby(Function.identity(),counting());
系统输出打印项次(结果)//打印{A=2,Cat=1,Dog=2}

您希望输出类型是什么?什么的数组?输出将是一个包含wfBlockIds数组元素的数组。数组([A]=>2[Cat]=>1[Dog]=>2)请更新您的问题,而不是将信息放在注释中。Java中的数组只能有int索引,因此您无法请求,也许映射适合您。您希望输出类型是什么?什么的数组?输出将是一个包含wfBlockIds数组元素的数组。数组([A]=>2[Cat]=>1[Dog]=>2)请更新您的问题,而不是将信息放在注释中。Java中的数组只能有int索引,因此您请求的内容不可能,也许映射对您有效。请尝试使用request.getParameter(“wf_block_id[]”而不调用parameterMap尝试在不调用parameterMap的情况下使用request.getParameter(“wf_block_id[])