-
[JAVA8] What is different things between Map and Filter in Java8?-2 / Map과 Filter 그리고 차이점에 대하여-2Backend/JAVA&JAVA8 2022. 5. 5. 14:00저번 시간에 자료구조에서 유용하게 사용할 수 있는 filter메소드를 살펴보았는데요.
map은 어떨까요?
map은 기존 데이터에서 수정하여 적용시킵니다.
원하는 수정사항을 반영하여 기존의 Map을 통째로 반환시키는 것이죠.
백문이 불여일타라고 하죠?
코드로 확인해보겠습니다.
이번에는 아래와 같이 알파벳 리스트를 만들어줍니다.
List<String> alphabetList = Arrays.asList("a","b","c","d");
그런데 갑자기, alphabetList 속에 있는 alphabet들을 전부 대문자로 바꾸고 싶은 생각이 들었습니다.
이전에 배운 filter로는 조건을 만족하는 값을 반환하는 코드밖에는 짤 수가 없습니다.
저는 지금 자료구조에 해당하는 값을 통째로 수정하고 통째로 반환하고 싶습니다....!
출처 입력
그렇다면... 무엇을 사용해야 할까요?
이때에 사용하는 것이 바로 map이라는 메소드 입니다.
혹시나 HashMap이라는 것과 헷갈리실까 봐 말씀드립니다만 HashMap 이란 Java에서 제공하는, 데이터를 담기 위 한 자료구조 중 하나인 것이고, 제가 이곳에서 이야기하는 map 이란, Java8 람다 표현식에서 어떠한 자료를 stream 화할 때에 추가적으로 원하는 데이터들을 솎아내기 위해 제공하는 메소드 중 하나인 map을 이야기하는 것입니다.
마침 HashMap 이야기가 나와서, HashMap에 대해서 정말 좋은 포스팅을 발견해서, 그 포스팅을 링크해놓겠습니다. 문제 시 삭제하겠습니다. 그리고 이 포스팅과는 무관한 주제입니다.
자바 HashMap을 효과적으로 사용하는 방법HashMap 은 편하고 빠르다. 하지만 어떻게 하면 효율적으로 잘 사용할지 몸부림치는 순간도 많다. 원문은 https://dzone.com/articles/how-to-use-java-hashmap-effectively 이다. HashMap 는 자바 개발자가 거의 매일 사용하는 가장 유명한 데이터 구조 중 하나이다. 이번 글에서는 자바에서 HashMap 이 무엇인지, 왜 사용해야하는지, 어떻게 사용할지에 대하여 다루려 한다. HashMap 기술에 깊히 빠져들기전에 예를 들어보자. 여러분이 편의점(원문은 식료품점)을 운영하고 있고,...
tech.javacafe.io
다시 돌아와서 위의 소문자들을 전부 대문자로 변경하고 싶은 경우에는 아래와 같이 코드를 작성하면 됩니다.
List<String> resultAlphabetList = alphabetList .stream() .map(String::toUpperCase) .collect(Collectors.toList()); resultAlphabetList.forEach(System.out::print); System.out.println();
그렇다면 결과 값은 아래와 같습니다.
ABCD
비슷한 내용을 여러 번 타이핑해 보시면 어느 곳이 같은지, 어느 곳이 다른지 조금 더 감이 오실 듯합니다.
그렇다면 이번에는, Map 안에 있는 key 와 value를 전부 출력해보겠습니다.
map.forEach((k,v) -> { System.out.println("keys: " + k + ", values: " + v); } );
위의 forEach 문은 너무 쉬워서 예제를 따로 준비하지 않았습니다.
Map은 key 와 value로 나누어져 있습니다. key는 보통 index를 뜻하는 경우가 많고, 해당 index를 찾아서 value를 송출하거나 변경하고 싶을 때 Map에 많이 담습니다.
위의 글까지 전부 읽어보신 분은 filter 메소드와 map 메소드의 차이에 대해 조금 더 명확해지셨을 것 같습니다.
다음 포스팅은 filter 메소드를 다룰 때에 잠깐 언급하였던 findFirst와 findAny 메소드에 대해 다루어보도록 하겠습니다.
감사합니다.
'Backend > JAVA&JAVA8' 카테고리의 다른 글