5AMSUNG

[java] Collectors.toMap 본문

Java

[java] Collectors.toMap

짝구이 2023. 5. 30. 15:19
반응형

Map 을 선언하고 배열을 순회하면서 put을 해주는 것이 귀찮기도하고.. 

어쩌면 더 명시적으로 데이터를 확인하면서 처리할 수 있는 방법인거 같음에도 Stream collect 로 맵을 만들어 보자

 

내가 원하는 형태의 Map 은 

Map<String ,Float > map

{aaaa=1.0, bbbb=1.0}

이런 모양이긴 한데 Float 값 즉, value 는 1.0f 값으로 고정되야 한다.

 

오브젝트로 이루어진 리스트의 경우는 쉽게 데이터를 만들 수 있었는데... 내가 원하는 구조는 

아래와 같은 코드로 만들 수 있었다. 

 

String[] strings = new String[]{"aaaa", "bbbb"};
Map<String ,Float > map = Arrays.stream(strings).distinct().collect(Collectors.toMap(Function.identity(), v-> 1.0f));

 

map 의 키는

Function.identity()

value 는 

v-> 1.0f

코드삽입 

boolQueryBuilder.should(QueryBuilders
        .queryStringQuery(Arrays.stream(requestParam.getKeyword().split(" ")).map(x->x.replaceAll(" ", " AND ")).toString())
        .type(MultiMatchQueryBuilder.Type.PHRASE_PREFIX)
        .fields(Arrays.stream(itemFields).collect(Collectors.toMap(Function.identity(), v -> 1.0f))));

스트림의 다른 기능도 정리하고 싶지만 필요한거 하나씩 정리하는 편이..

 

 

반응형

'Java' 카테고리의 다른 글

[IntelliJ] Unsupported class file major version 61  (0) 2023.08.06
[AOP] Aspect Oriented Programming  (0) 2023.07.23
[codility] AbsDistinct  (0) 2023.05.19
[codilty] MaxProfit  (1) 2023.05.16
[groom] 카드모으기  (0) 2023.05.10