2016-07-25 2 views
0

나는 배열의 값을 계산하고 그것을 array.In PHP에서 array_count_values를 사용하여 그것을 유지하고 싶습니다.자바 배열의 모든 값을 계산하고 배열에 저장

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

출력 :

나는 자바에서 그렇게 할
Array ([A] => 2 [Cat] => 1 [Dog] => 2) 

. 자바 코드의

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 ​​()와 같은 동등한 결과를 얻을 수 있습니다.

+0

비슷한을 생산? 무엇의 배열? – Eran

+0

출력은 wfBlockIds array.Array ([A] => 2 [Cat] => 1 [Dog] => 2)의 요소를 포함하는 배열이됩니다. –

+1

의견에 정보를 넣는 대신 질문을 업데이트하십시오. – GhostCat

답변

2

다음 코드를 사용해보십시오 :

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); 
    } 
} 
0

귀하의 코드는 괜찮지 만, 당신이 요청 PARAMS에서 점점 문자열 배열에 포함 된 3 * "1469441126299"2 * "1469441140125"을; request.getParameterMap()을 인쇄하면 그 내용이 표시됩니다.

+0

parameterMap을 호출하지 않고 request.getParameter ("wf_block_id []")를 사용하려고합니다. – Elgayed

1

Java 배열은 int 인덱스 만 가질 수 있으므로 Map과 함께 PHP와 동일한 functionnality를 얻을 수 있습니다.

다음 코드는 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} 
관련 문제