慕無忌1623718
2021-09-29 13:22:42
我正在嘗試迭代我在 Java 中存儲在 ArrayList 中的以下數據。這個 ArrayList 被稱為“T”:outlook temperature humidity windy playsunny hot high False Noovercast hot low True Norainy cool normal True Nosunny hot normal False Yes我想為每一列獲取這樣的圖表,以便我獲得按是或否(播放列)分組的每列的出現次數:outlook play Yes Nosunny 1 1overcast 1 1rainy 0 1我真的不太了解Java。但是,我已經看到我需要為此使用一個哈希圖元組,因為我需要像這樣對幾個屬性進行分組(總是與“播放”列相比)。到目前為止,我的代碼是這樣的(但我確定它不起作用)。有人可以幫我嗎?謝謝Map<String, Integer> mapOutput = new HashMap(); for (List<String> input: T) { if (mapOutput.containsKey(input.get(input.size()-1))) { mapOutput.put(input.get(input.size()-1), mapOutput.get(input.get(input.size()-1)) + 1); } else { mapOutput.put(input.get(input.size()-1), 1); } }
1 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
我將在這里做出一些瘋狂的猜測,因為從這個問題中,初始數據結構和所需的輸出都不清楚:
表示的表格數據
T
是List<List<String>>
您想按每列分組,計算列中出現的值等于 的行數
Yes
和出現的值等于No
的play
行數
如果這些假設成立,您可以按如下方式實現:
Map<String, Map<Boolean, Long>> result = T.stream()
.collect(Collectors.groupingBy(
input -> input.get(columnIndex),
Collectors.partitioningBy(
input -> "Yes".equals(input.get(input.size() - 1)),
Collectors.counting())));
其中columnIndex是參數,其值為0for outlook、1fortemperature等,即它匹配要分組的列的索引。
這假設該play列始終是每一行的最后一列,并且既沒有空值也沒有缺失值。字符串也必須修剪,即沒有空格、制表符等。
添加回答
舉報
0/150
提交
取消