java 流拆分_java - 在Java流中拆分字符串? - SO中文参考 - www.soinside.com
嘗試一下:String fileName = "file.txt";
try {
Map wordCount = Files.lines(Path.of(fileName))
.flatMap(line -> Arrays.stream(line.split("\\s+")))
.filter(w->w.matches("[a-zA-Z]+"))
.sorted(Comparator.comparing(String::length)
.thenComparing(String.CASE_INSENSITIVE_ORDER))
.collect(Collectors.groupingBy(w -> w,
LinkedHashMap::new, Collectors.counting()));
wordCount.entrySet().forEach(System.out::println);
}catch (Exception e) {
e.printStackTrace();
}
這相對(duì)簡(jiǎn)單。它只是在空白處分割并通過(guò)將單詞放入地圖(其中Key是單詞,而Value是包含計(jì)數(shù)的long)來(lái)對(duì)單詞進(jìn)行計(jì)數(shù)。
我提供了一個(gè)過(guò)濾器,僅捕獲字母以外的單詞。它的工作方式是將Lines放入流中。然后使用String.split將每一行拆分為多個(gè)單詞。由于這會(huì)創(chuàng)建一個(gè)數(shù)組,因此flatMap會(huì)將所有這些單獨(dú)的單詞流轉(zhuǎn)換為單個(gè)單詞流,并在其中對(duì)其進(jìn)行處理。它的作用是Collectors.groupingBy,它將為每個(gè)鍵以特定方式將值分組。在這種情況下,我指定了Collectors.counting()方法來(lái)增加每次出現(xiàn)鍵(即單詞)時(shí)的計(jì)數(shù)。
作為一種選擇,我先對(duì)單詞進(jìn)行長(zhǎng)度排序,然后按字母順序排序,忽略大小寫(xiě)。
總結(jié)
以上是生活随笔為你收集整理的java 流拆分_java - 在Java流中拆分字符串? - SO中文参考 - www.soinside.com的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: httpsrequest java_ja
- 下一篇: java byte(字节_【原创】Jav