[英]create tuple of hashmaps from arraylist - Java
我正在嘗試迭代存儲在Java ArrayList中的以下數據。 此ArrayList稱為“ T”:
outlook temperature humidity windy play
sunny hot high False No
overcast hot low True No
rainy cool normal True No
sunny hot normal False Yes
我想為每個列獲取這樣的圖表,以便獲得按“是”或“否”(播放列)分組的每個列的出現次數:
outlook play
Yes No
sunny 1 1
overcast 1 1
rainy 0 1
我真的對Java不太了解。 但是,我已經看到我需要為此使用一個哈希表元組,因為我需要像這樣對幾個屬性進行分組(始終與“ play”列相比)。
到目前為止,我的代碼是這樣(但我確定它不起作用)。 誰能幫我嗎? 謝謝
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);
}
}
我將在這里做出一些大膽的猜測,因為無論是初始數據結構還是所需的輸出都無法從問題中明確得出:
T
表示的表格數據是List<List<String>>
play
列顯示的行數等於“ Yes
以及顯示的行數等於“ No
如果這些假設成立,則可以按以下步驟實現:
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
是參數, outlook
值是0
, temperature
值是1
等等,即它與要分組的列的索引匹配。
假設play
列始終是每一行的最后一行,並且既沒有null值也沒有缺失值。 字符串也必須修剪,即沒有空格,制表符等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.