1 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
這就是如何使用 split 方法將字符串轉(zhuǎn)換為字符串?dāng)?shù)組。我沒(méi)有使用列表,因?yàn)槲蚁胂蚰故疽环N稍微不同的方法來(lái)解決此問(wèn)題。
我正在刪除空格并將所有內(nèi)容轉(zhuǎn)換為小寫(xiě)。如果你想做的話,這取決于你。
Scanner input = new Scanner(System.in);
String userInput;
System.out.print("Enter a line of words: ");
userInput = input.nextLine().replace(" ", "").toLowerCase();
String[] userInputSplit = userInput.split(""); // Splits array
Arrays.sort(userInputSplit); // Sorts array
System.out.println(Arrays.toString(userInputSplit)); // Prints sorted array
// Checks for frequency of each letter using maps
Map<String, Integer> countMap = Arrays.stream(userInputSplit)
.collect(Collectors.toMap(Function.identity(), v -> 1, Integer::sum));
// Prints map
System.out.println("Frequency of words: " + countMap.toString());
輸出:
Enter a line of words: The quick brown fox jumps over the lazy dog
[a, b, c, d, e, e, e, f, g, h, h, i, j, k, l, m, n, o, o, o, o, p, q, r, r, s, t, t, u, u, v, w, x, y, z]
Frequency of words: {a=1, b=1, c=1, d=1, e=3, f=1, g=1, h=2, i=1, j=1, k=1, l=1, m=1, n=1, o=4, p=1, q=1, r=2, s=1, t=2, u=2, v=1, w=1, x=1, y=1, z=1}
編輯:
就像@AndyTurner建議的那樣,您也可以使用Collectors.counting()這使得語(yǔ)法更容易理解,但它將返回 Long 而不是 Integer
Map<String, Long> countMap = Arrays.stream(userInputSplit)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Collectors.counting本質(zhì)上是
Map<String, Integer> countMap = Arrays.stream(userInputSplit)
.collect(Collectors.toMap(Function.identity(), v -> 1L, Long::sum));
使用 HashSet 和 Collections.Frequency:
HashSet<String> uniqueValues = new HashSet<String>(userInputList);
for (String value : uniqueValues) {
System.out.println("Frequency of " + value + " is: " + Collections.frequency(userInputList, value));
}
添加回答
舉報(bào)