거북이-https://velog.io/@violet_evgadn 이전완료

Collections Method 본문

코딩 테스트 시 알면 좋은 것들

Collections Method

VioletEvgadn 2023. 1. 15. 23:46

코딩 테스트 시 필요한 이유

먼저 말하고 갈 것은 아래 내용들이 필수적으로 알아야 하는 메서드들은 아니다.

 

하지만 Collections에는 꽤 많은 편리한 메서드들이 구현되어 있는데 이를 코딩 테스트에서 직접 구현하고 있으면 당연히 에러 발생 가능성이 있을 것이다.

귀찮고 위험성 있는 작업을 줄이고 로직을 생각하는 데에만 집중하기 위해 미리 구현된 메서드 중 활용할 것 같은 것들을 골라내는 작업이 한 번쯤은 필요하다고 생각했다.

 

참고로 이전에 배웠던 "Collection"은 단순한 인터페이스이며 "Collections"는 Collection들을 다루기 위한 클래스라고 알고 있으면 될 것이다.


Collections 메서드

◎ Collection 중 최대(최솟값) 찾기

Collections.max(Collection<? extends T> coll);

Collections.max(Collection<? extends T> coll, Comparator(? super T> comp);

Collections.min(Collectoin<? extends T> coll);

Collections.min(Collection<? extends T> coll, Comparator(? super T> comp);

이전에 배웠다시피 Comparator 부분에 람다식을 통해서 어떻게 객체의 대소를 구분할지 정해줄 수도 있다.

 

◎ 정렬하기

Collections.sort(List<T> list);

Collections.sort(List<T> list, Comparator<? super T> c);

 

◎ 일치하는 객체 개수 반환

Collections.frequency(Collection<?> c, Object o)

Collection c 중에서 Object o와 일치하는 객체의 개수를 반환한다.

당연히 Collections.frequency를 활용하기 위해선 "equals()" 메서드와 "hashCode()" 메서드가 Override 되어 있어야 한다.

 

이전에 말했듯 Java에서는 두 객체의 hashCode값을 비교하고 만약 hashCode 값이 동일하다면 equals() 메서드를 수행시켜 true가 반환될 경우에만 일치한다고 판단한다.

따라서 이를 위해 미리 구현된 Class가 아닌 Custom Class일 경우 hashCode() 및 equals() 메서드의 오버라이딩이 꼭 선행되어야 한다.


Map의 getOrDefault()

이 메서드는 Collections 메서드는 아니지만 워낙 중요하고 Collection 중 하나로 간주되는 Map에서 매우 중요한 함수이기 때문에 한 번 정리하고 가는 것이 좋을 것 같아 기입했다.

 

Map의 getOrDefault는 자바 8부터 추가되었음을 알고 사용하자.

(즉, 혹시 자바 7에서 활용해야 한다면 안타깝게도 활용할 수 없다)

 

◎ 일치하는 객체 개수 반환

Map<K, V> hashMap = new HashMap<>();

V value = hashMap.getOrDefault(K key, V defaultValue);

"getOrDefault" 메서드의 사용 이유는 Parameter인 "V defaultValue"에서 알 수 있다.

 

원래라면 hashMap.get(K key)를 했을 때 만약 key와 일치하는 Entry가 존재하지 않을 경우 null 데이터가 반환되었다.

당연히 반환된 null 데이터에 어떠한 수정을 가하거나 메서드를 실행시킨다면 NPE 문제가 발생할 것이다.

 

하지만 getOrDefault를 사용할 경우 key에 일치하는 Entry가 존재하지 않는다면 defaultValue 값을 반환한다.

 

즉, 무조건 V value 값이 존재한다고 가정하고 로직을 짜도 NPE 발생 가능성이 줄어들고 V value를 변형시킨 V value'을 hashMap.put(K key, V value')처럼 바로 넣어줘도 된다는 장점이 있다.

기존 Entry가 존재했다면 Entry의 Value가 value'으로 업데이트될 것이며 Entry가 존재하지 않았을 경우 새로운 Entry가 생성될 것이므로 put() 메서드를 편리하게 활용할 수 있게 된다. 

'코딩 테스트 시 알면 좋은 것들' 카테고리의 다른 글

MST - 이론  (0) 2023.02.05
Trie  (0) 2023.02.01
StringBuilder  (0) 2023.01.15
Char 배열 처리  (0) 2023.01.09
조합과 순열  (0) 2023.01.03
Comments