Written by coh at home

Collections vs Collectors 본문

languages/java

Collections vs Collectors

och 2024. 10. 5. 00:25

둘 다 자바에서 제공하는 클래스지만 서로 다른 목적을 갖고 있다.

1.Collections 클래스

  • 정적 유틸리티 클래스로 List, Set, Map 등의 컬렉션을 조작하는 다양한 메서드 제공.
  • 정렬, 검색, 동기화 등의 기능이 포함되어 있다.

주요메서드

  • Collections.sort(List); 정렬
  • Collections. reverse(List); 순서 뒤집기
List<Integer> arr = Arrays.asList(3,2,1);
Collections.sort(arr); // [1,2,3]

Collections.sort() 에서 정렬기준을 주기 위해서 두 가지 인터페이스를 사용할 수 있다.

  • Comparable : 자신과 다른 원소를 비교
  • Comparator : 서로 다른 두 원소를 비교

정렬기준은 외우고 있진 않고 그때그때 사용해보고 판단한다.
다음은 Comparator를 사용한 방법이다.

Collections.sort(arr, (a,b) -> b-a);  //내림차순
  • 우선순위큐에서 heap property를 설정할 때 자주 사용하니 숙지하면 좋다.

2. Collectors 클래스

  • Stream API에서 사용되는 유틸리티 클래스로 스트림 결과를 List, Set, Map 등의 컬렉션으로 변환
  • 주로 Stream의 결과를 수집

주요메서드

  • Collectors.toList() 스트림 요소들을 List로 수집
  • Collectors.toSet()
  • Collectors.joining() 스트림 요소들을 연결하여 스트링으로 변환
List<Integer> numbers = Arrays.asList(1,2,3,4,5);
List<Integer> evens = numbers.stream().filter(i -> i % 2==0)
	.collect(Collectors.toList());

'languages > java' 카테고리의 다른 글

[Java] 입출력과 최대힙  (1) 2024.11.18
[Stream] mapToInt vs map  (0) 2024.10.07
[JAVA] 제네릭의 언박싱을 탐구해보자  (0) 2024.08.04
[JAVA] 함수형 인터페이스와 스트림.  (0) 2024.02.02
[JAVA]상속과 다형성  (1) 2023.10.30