Pengiraan Frekuensi Perkataan dalam Java 8: Pendekatan Diperkemas
Dalam Java 8, mengira kekerapan perkataan dalam senarai boleh dicapai dengan elegan menggunakan strim.
Pertimbangkan senarai contoh berikut: Senarai
<code class="java">Map<String, Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
Kod ini mula-mula mengumpulkan elemen senarai mengikut identiti rentetannya, dengan berkesan mencipta peta di mana kunci ialah perkataan dan nilai unik kiraan mereka. Pengumpul Collectors.counting secara automatik menambah kiraan untuk setiap perkataan.
Peta yang terhasil, wordFrequencies, akan menyerupai {ciao=2, hello=1, bye=2} apabila dicetak.
Sebagai alternatif , untuk kiraan bernilai integer:
<code class="java">Map<String, Integer> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
Varian ini menggunakan Collectors.summingInt untuk mengumpul kiraan integer.
Untuk mengisih peta yang terhasil mengikut nilai, kami boleh merantai aliran dan pengumpul tambahan:
<code class="java">LinkedHashMap<String, Long> countByWordSorted = wordFrequencies.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>
Isih ini memastikan bahawa perkataan yang paling kerap muncul muncul dahulu dalam peta.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengira frekuensi perkataan dengan cekap dalam Java 8 menggunakan aliran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!