gpt4 book ai didi

java - 从数组列表创建 HashMap 元组 - Java

转载 作者:行者123 更新时间:2023-12-02 10:47:54 25 4
gpt4 key购买 nike

我正在尝试迭代存储在 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

我想为每列获取这样的图表,以便获得按"is"或“否”(播放列)分组的每列出现的次数:

outlook          play
Yes No
sunny 1 1
overcast 1 1
rainy 0 1

我对Java真的不太了解。但是,我发现我需要使用 HashMap 元组来实现此目的,因为我需要像这样对多个属性进行分组(始终与“播放”列进行比较)。

到目前为止我的代码是这样的(但我确信它不起作用)。有人可以帮我吗?谢谢

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. 您想要按每一列进行分组,计算出现的值等于 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是一个参数,其值为0对于 outlook , 1对于 temperature等,即它与要分组的列的索引匹配。

这假设 play列始终是每行的最后一列,并且既没有空值也没有缺失值。字符串也必须被修剪,即没有空格、制表符等。

关于java - 从数组列表创建 HashMap 元组 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52411197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com