簡體   English   中英

從arraylist創建哈希表的元組-Java

[英]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);

        }

    }

我將在這里做出一些大膽的猜測,因為無論是初始數據結構還是所需的輸出都無法從問題中明確得出:

  1. T表示的表格數據是List<List<String>>
  2. 您想按每列分組,計算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值是0temperature值是1等等,即它與要分組的列的索引匹配。

假設play列始終是每一行的最后一行,並且既沒有null值也沒有缺失值。 字符串也必須修剪,即沒有空格,制表符等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM