从arraylist-Java创建哈希映射的元组
我试图迭代存储在Java ArrayList中的以下数据。此ArrayList称为“T”: 我想为每一列获得这样的图表,这样我就可以得到每一列的出现次数,按是或否分组(播放列): 我对Java真的不太了解。但是,我已经看到,我需要为此使用一个hashmaps元组,因为我需要像这样对几个属性进行分组(总是与“play”列进行比较) 到目前为止,我的代码是这样的(但我确信它不起作用)。有人能帮我吗?谢谢从arraylist-Java创建哈希映射的元组,java,hashmap,tuples,Java,Hashmap,Tuples,我试图迭代存储在Java ArrayList中的以下数据。此ArrayList称为“T”: 我想为每一列获得这样的图表,这样我就可以得到每一列的出现次数,按是或否分组(播放列): 我对Java真的不太了解。但是,我已经看到,我需要为此使用一个hashmaps元组,因为我需要像这样对几个属性进行分组(总是与“play”列进行比较) 到目前为止,我的代码是这样的(但我确信它不起作用)。有人能帮我吗?谢谢 Map<String, Integer> mapOutput = new HashM
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);
}
}
MapMapOutput=newHashMap();
对于(列表输入:T){
if(mapOutput.containsKey(input.get(input.size()-1)){
mapOutput.put(input.get(input.size()-1),mapOutput.get(input.get(input.size()-1))+1);
}否则{
mapOutput.put(input.get(input.size()-1),1);
}
}
我将在这里做一些大胆的猜测,因为从这个问题上看,初始数据结构和所需的输出都不清楚:
T
表示的表格数据是列表
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())));
Map结果=T.stream()
.collect(收集器.groupingBy(
输入->输入.get(columnIndex),
收集者。分割者(
输入->“是”。等于(input.get(input.size()-1)),
收集器。计数();
其中,columnIndex
是一个参数,对于outlook
,其值为0
,1
对于温度
,等等,即它与要分组的列的索引相匹配
这假定
play
列始终是每行的最后一列,并且不存在空值或缺失值。字符串也必须修剪,即没有空格、制表符等。输入的每一行都是T中的一个元素?一个哈希映射的元组,其中唯一的键是Yes/No,这似乎是一种非常荒谬的存储方式。。。我建议使用outlook键控的hashmap并存储PlayData,即两个整数的元组。除了它是一个自定义类而不是元组,因为Java没有元组。寻求调试帮助的问题(“我确信它不起作用”)必须包括一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见:请澄清一些事情。。。1.您的表格数据T
是字符串列表吗?2.outlook(第一列)的分组标准是什么?是否要计算出现了多少次,即sunny
与play=yes
和play=no
一起出现,并且与outlook
列中的所有其他值相同?如果为true,则示例输出没有意义(cloud
在Yes
中显示1
,但它应该是0
)。请提供样本输入和样本输出。
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);
}
}
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())));