我正在尝试迭代我在 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
提交
取消