Pengiraan kekerapan perkataan dalam Java 8
Bagaimana untuk mengira kekerapan perkataan dalam senarai menggunakan Java 8?
<code class="java">List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");</code>
Hasilnya sepatutnya:
<code class="java">{ciao=2, hello=1, bye=2}</code>
Pada mulanya, saya menjangkakan akan menggunakan kaedah peta dan mengurangkan, tetapi kaedah sebenar berbeza sedikit.
<code class="java">Map<String, Long> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
Atau untuk nilai integer:
<code class="java">Map<String, Integer> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
EDIT
Saya juga menambah cara mengisih peta mengikut nilai:
<code class="java">LinkedHashMap<String, Long> countByWordSorted = collect.entrySet() .stream() .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> { throw new IllegalStateException(); }, LinkedHashMap::new ));</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengira Frekuensi Perkataan dalam Senarai Menggunakan Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!