μ€νΈλ¦Ό νμ΄νλΌμΈ νλ‘κ·Έλλ°μ ν΅μ¬μ λΆμμ© μλ ν¨μ κ°μ²΄μ μλ€.
μ€νΈλ¦Ό λΏ μλλΌ μ€νΈλ¦Ό κ΄λ ¨ κ°μ²΄μ 건λ€μ§λ λͺ¨λ ν¨μ κ°μ²΄κ° λΆμμ©μ΄ μμ΄μΌ νλ€.
μ€νΈλ¦Όμ μ¬λ°λ‘ μ¬μ©νλ €λ©΄ μμ§κΈ°λ₯Ό μ μμλ¬μΌ νλ€. κ°μ₯ μ€μν μμ§κΈ° ν©ν°λ¦¬λ
toList, toSet, toMap, groupingBy, joining μ΄λ€.
μ€νΈλ¦Ό ν¨λ¬λ€μ
- μ€νΈλ¦Όμ κ·Έμ λ νλμ APIκ° μλ, ν¨μν νλ‘κ·Έλλ°μ κΈ°μ΄ν ν¨λ¬λ€μ
- μ€νΈλ¦Όμ΄ μ 곡νλ ννλ ₯, μλ, (μν©μ λ°λΌμλ) λ³λ ¬μ±μ μ»μΌλ €λ©΄ APIλ λ§ν κ²λ μκ³ μ΄ ν¨λ¬λ€μκΉμ§ ν¨κ» λ°μλ€μ¬μΌ νλ€.
- μ€νΈλ¦Ό ν¨λ¬λ€μμ ν΅μ¬μ κ³μ°μ μΌλ ¨μ λ³νμΌλ‘ μ¬κ΅¬μ±νλ λΆλΆ
- μ΄λ κ° λ³ν λ¨κ³λ κ°λ₯ν ν μ΄μ λ¨κ³μ κ²°κ³Όλ₯Ό λ°μ μ²λ¦¬νλ μμ ν¨μμ¬μΌ ν¨. (μμ ν¨μλ μ€μ§ μ λ ₯λ§μ΄ κ²°κ³Όμ μν₯μ μ£Όλ ν¨μ. λ€λ₯Έ κ°λ³ μνλ₯Ό μ°Έμ‘°νμ§ μκ³ ν¨μ μ€μ€λ‘λ λ€λ₯Έ μνλ₯Ό λ³κ²½νμ§ μλλ€.)
- μ΄λ κ² νλ €λ©΄ μ€νΈλ¦Ό μ°μ°μ 건λ€λ ν¨μ κ°μ²΄λ λͺ¨λ λΆμμ©μ΄ μμ΄μΌ ν¨
// Uses the streams API but not the paradigm--Don't do this! Map<String, Long> freq = new HashMap<>(); try (Stream<String> words = new Scanner(file).tokens()) { words.forEach(word -> { freq.merge(word.toLowerCase(), 1L, Long::sum); }); } // Proper use of streams to initialize a frequency table ( Map<String, Long> freq; try (Stream<String> words = new Scanner(file).tokens()) { freq = words .collect(groupingBy(String::toLowerCase, counting())); } System.out.println(freq);
- μμ μ½λ μμλ μ€νΈλ¦Ό μ½λλ₯Ό κ°μ₯ν λ°λ³΅μ μ½λμ. μ½λμ λͺ¨λ μμ μ΄ μ’ λ¨ μ°μ°μΈ forEach μμ μΌμ΄λκ² λκ³ μ΄λ μΈλΆ μνλ₯Ό μμ νλ λλ€λ₯Ό μ€ννλ©΄μ λ¬Έμ κ° μκΉ
- forEach μ°μ°μ μ’ λ¨ μ°μ° μ€ κΈ°λ₯μ΄ κ°μ₯ μ κ³ κ°μ₯ βλβ μ€νΈλ¦Όλ€μ. λλκ³ λ°λ³΅μ μ΄λΌ λ³λ ¬ν ν μλ μμ. forEach μ°μ°μ μ€νΈλ¦Ό κ³μ° κ²°κ³Όλ₯Ό λ³΄κ³ ν λλ§ μ¬μ©νκ³ , κ³μ°νλ λ°λ μ°μ§ λ§μ.
Collectors(java.util.stream.Collectors)
- μ€νΈλ¦Όμ μ¬μ©νλ €λ©΄ κΌ λ°°μμΌ νλ μλ‘μ΄ κ°λ
- μΆμ(reduction; μ€νΈλ¦Όμ μμλ€μ κ°μ²΄ νλμ μ·¨ν©νλ€λ μλ―Έ) μ λ΅μ μΊ‘μνν λΈλλ°μ€ κ°μ²΄λΌκ³ μκ°νλ©΄ λ¨
μμ§κΈ° λ©μλλ€
toList(), toSet(), toCollection(collectionFactory)
// Pipeline to get a top-ten list of words from a frequency table List<String> topTen = freq.keySet().stream() .sorted(comparing(freq::get).reversed()) .limit(10) .collect(toList()); System.out.println(topTen);
- toMap() β λ§΅ μμ§κΈ°
- groupingBy β μ λ ₯μΌλ‘ λΆλ₯ ν¨μλ₯Ό λ°κ³ μΆλ ₯μΌλ‘λ μμλ€μ μΉ΄ν κ³ λ¦¬λ³λ‘ λͺ¨μ λμ λ§΅μ λ΄μ μμ§κΈ°λ₯Ό λ°ν
- partitioningBy
- minBy
- maxBy
- joining