TIL

20221031 TIL 코테에 대비하자

jiwoosmile 2022. 10. 31. 21:57

 

코딩테스트를 풀 때 효율성 테스트를 통과하려면 Collection을 이용하는 경우가 많다.

그런데 아직 Collection들의 메서드들에 대해 잘 모르면 문제를 풀기 어려운 것 같아서

자주 쓰일 만한 메서드들을 정리해두어야겠다고 생각했다.

https://cdn.programiz.com/sites/tutorial2program/files/Java-Collections.png

Collection의 메서드

  • Collections.max(Collection collection)
  • Collections.max(Collection collection, Comparator comparator)
  • Collections.min(Collection collection)
  • Collections.min(Collection collection, Comparator comparator)
  • Collections.swap(List list, int i, int j) 
    • i번째와 j번째 값을 바꾼다.
  • Collections.sort(List list)
  • Collections.sort(List list, Comparator comparator)
  • Collections.rotate(List list, int distance)
    • list를 distance가 양수라면 distance만큼 오른쪽으로 한 칸씩 미루고, list length를 넘어간 것은 앞으로 땡겨온다.
    • distance가 음수라면 distance만큼 왼쪽으로 한 칸씩 당기고, 첫 값보다 당겨진 것은 끝에서부터 넣어준다.
  • Collections.reverseOrder()
    • Collection의 natural ordering을 뒤집은 comparator를 반환한다.
  • Collections.reverse(List list)
    • list를 뒤집는다.
  • Collections.replaceAll(List list, T oldValue, T newValue)
  • Collections.nCopies(int n, T o)
    • object를 n번 카피한 리스트를 반환한다.
  • Collections.indexOfSubList(List source, List target)
    • sublist의 첫 element 인덱스를 반환한다.
    • 만약 sublist를 source에서 못 찾으면 -1을 반환한다.
  • Collections.frequency(Collection collection, Object object)
    • object와 equal한 값이 collection에 몇 번 등장하는지 찾아준다.
  • Collections.fill(List list, T object)
    • list의 값들을 object로 넣어준다.
  • Collections.disjoint(Collection collection1, Collection collection2)
    • 겹치는 원소가 하나도 없으면 true를 반환한다.
  • Collections.binarySearch(List list, T key, Comparator comparator)
    • binarySearch 알고리즘으로 key를 list에서 찾는다.
    • 이 때 list는 comparator를 이용해서 ascending 순서로 소팅되어 있어야 한다.
  • Collections.binarySearch(List list, T key)
    • binarySearch 알고리즘으로 key를 list에서 찾는다.
    • 이 때 list는 natural ordering에 따른 ascending 순서로 소팅되어 있어야 한다.

 

List의 메서드

  • List.add(E element)
  • List.add(int index, E element)
  • List.contains(Object object)
  • List.containsAll(Collection collection)
    • collection의 모든 요소를 리스트가 갖고 있을 때 true를 반환한다.
  • List.get(int index)
  • List.indexOf(Object object)
    • object와 일치하는 첫 index를 반환한다.
    • 만약 못 찾으면 -1이 반환된다.
  • List.lastIndexOf(Object object)
    • object와 일치하는 마지막 index를 반환한다.
    • 만약 못 찾으면 -1이 반환된다.
  • List.remove(int index)
  • List.remove(Object object)
    • 일치하는 요소가 있으면 일치하는 첫 요소를 삭제한다.
  • List.removeAll(Collection collection)
    • 리스트에서 collection의 모든 요소에 해당하는 값들을 삭제한다.
  • List.retainAll(Collection collection)
    • 리스트에서 collection에 존재하는 값만 남기고, collection에 없는 값은 다 제거한다.
  • List.set(int index, E element)
    • 인덱스에 해당하는 값을 element로 대체한다.
  • List.size()
  • List.sort(Comparator comparator)
  • List.subList(int fromIndex, int toIndex)
    • fromIndex에 해당하는 값은 포함하고, toIndex에 해당하는 값은 포함되지 않는다.
  • List.toArray()

 

Set의 메서드

  • Set.add(E e)
  • Set.addAll(Collection collection)
  • Set.contains(Object object)
  • Set.containsAll(Collection collection)
  • Set.isEmpty()
  • Set.remove(Object object)
  • Set.removeAll(Collection collection)
  • Set.retainAll(Collection collection)
    • set에 collection에 있는 값만 남긴다.
  • Set.size()
  • Set.toArray()

 

Map의 메서드

  • Map.containsKey(Object key)
  • Map.containsValue(Object value)
  • Map.entrySet()
    • map으로 stream을 쓰고 싶을 때 key와 value가 모두 필요한 경우
    • Map.entrySet().stream(entry -> {entry.getKey() entry.getValue()~~ })
    • 와 같이 활용할 수 있다.
  • Map.get(Object key)
  • Map.getOrDefault(Object key, V defaultValue)
    • key가 map에 있으면 key에 해당하는 값을 가져오고,
    • 없으면 defaultValue를 반환한다.
  • Map.isEmpty()
  • Map.keySet()
  • Map.put(K key, V value)
    • 만약 이미 key에 어떤 값이 매핑되어 있다면 value로 대체된다.
  • Map.putAll(Map m)
  • Map.putIfAbsent(K key, V value)
    • key가 Map에 존재하지 않는 key거나 key의 value가 null이면 key에 value를 매핑해주고 null을 반환하고,
    • 만약 key에 null이 아닌 값이 매핑되어 있으면 그 매핑된 값을 반환한다.
  • Map.remove(Object key)
  • Map.remove(Object key, Object value)
    • key에 해당하는 값이 value일 때 그 entry를 삭제한다.
  • Map.replace(K key, V value)
  • Map.replace(K key, V oldValue, V newValue)
    • key에 해당하는 값이 oldValue에 해당할 때 newValue로 replace한다.
  • Map.size()
  • Map.values()

 

+ array(int[]타입)를 List(List<Integer>타입)로 바꾸기

Arrays.stream(numbers)
      .boxed()
      .collect(Collectors.toList());

 

다양한 메서드들을 써보면서 각 메서드를 어떤 상황에 쓰면 좋을 지도 정리해보자!

그리고 String의 메서드들도 정리해보자!