【发布时间】:2018-09-19 17:21:35
【问题描述】:
我正在尝试迭代我存储在 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。但是,我已经看到我需要为此目的使用一个哈希图元组,因为我需要像这样对几个属性进行分组(总是与“播放”列相比)。
到目前为止,我的代码是这样的(但我确信它不起作用)。任何人都可以帮助我吗?谢谢
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中的一个元素?
-
一个哈希图元组,其中唯一的键是是/否,似乎是一种非常荒谬的存储方式...我建议一个由 Outlook 键入的哈希图并存储 PlayData,两个整数的元组.除了它是一个自定义类而不是元组,因为 Java 没有元组。
-
寻求调试帮助的问题(“我确定它不起作用”)必须包含特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见:minimal reproducible example
-
请澄清一些事情... 1. 您的表格数据
T是字符串列表吗? 2.outlook(第一列)的分组标准如何?您是否要计算sunny与play=yes和play=no出现的次数,以及outlook列中的所有其他值的出现次数?如果为真,那么您的示例输出没有意义(overcast在Yes中与1一起出现,但它应该是0)。请提供示例输入和示例输出。