05AM

[Java] collect(), Collectors, Collections ํŠน์ง• ์ •๋ฆฌ ๋ณธ๋ฌธ

Programming Language/Java

[Java] collect(), Collectors, Collections ํŠน์ง• ์ •๋ฆฌ

_05AM 2024. 5. 27. 11:06

๐Ÿ”ท `collect()`

Java Stream API์˜ ๋ฉ”์„œ๋“œ๋กœ, ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜ ํŠน์ •ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ง‘๊ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

`collect` ๋ฉ”์„œ๋“œ๋Š” ์ฃผ๋กœ Collector๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์•„ ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.

// List๋กœ ์ˆ˜์ง‘
List<String> wordList = words.stream().collect(Collectors.toList());

// Set์œผ๋กœ ์ˆ˜์ง‘
Set<String> wordSet = words.stream().collect(Collectors.toSet());

Stream (Java SE 11 & JDK 11 ) (oracle.com)

๐Ÿ”ท `Collectors`

๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋กœ, ์ฃผ๋กœ ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜ ํŠน์ •ํ•œ ์ง‘๊ณ„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

`Collectors` ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋Š” ์ฃผ๋กœ `collect` ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค.

โžก๏ธ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • `toList()`: ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ˆ˜์ง‘
  • `toSet()`: ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ์„ธํŠธ๋กœ ์ˆ˜์ง‘
  • `joining()`: ์ŠคํŠธ๋ฆผ์˜ ๋ฌธ์ž์—ด ์š”์†Œ๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๊ฒฐํ•ฉ
  • `groupingBy()`: ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ํŠน์ • ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”
  • `partitioningBy()`: ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‘ ๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„ํ• 
  • `summarizingInt()`, `summarizingDouble()`, `summarizingLong()`: ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ์— ๋Œ€ํ•œ ํ†ต๊ณ„ ์š”์•ฝ ์ •๋ณด ์ƒ์„ฑ
// ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ
String joinedString = words.stream().collect(Collectors.joining(" "));
System.out.println(joinedString); // ์ถœ๋ ฅ: Hello World Java Streams

// ๊ทธ๋ฃนํ™”
Map<Integer, List<String>> groupedByLength = words.stream()
                                                  .collect(Collectors.groupingBy(String::length));

Collections (Java SE 11 & JDK 11 ) (oracle.com)

๐Ÿ”ท `Collections`

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋กœ, ์ปฌ๋ ‰์…˜์˜ ์ •๋ ฌ, ๊ฒ€์ƒ‰, ๋ณ€ํ™˜ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

Collections ํด๋ž˜์Šค๋Š” java.util ํŒจํ‚ค์ง€์— ์†ํ•ด ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ปฌ๋ ‰์…˜์„ ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

โžก๏ธ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • `sort(List<T> list)`: ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ
  • `reverse(List<?> list)`: ๋ฆฌ์ŠคํŠธ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜์ „
  • `shuffle(List<?> list)`: ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ž๊ธฐ
  • `min(Collection<? extends T> coll)`: ์ปฌ๋ ‰์…˜์—์„œ ์ตœ์†Œ๊ฐ’ ๋ฐ˜ํ™˜
  • `max(Collection<? extends T> coll)`: ์ปฌ๋ ‰์…˜์—์„œ ์ตœ๋Œ€๊ฐ’ ๋ฐ˜ํ™˜
  • `unmodifiableList(List<? extends T> list)`: ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜

Collections (Java SE 11 & JDK 11 ) (oracle.com)

Comments