为了账号安全,请及时绑定邮箱和手机立即绑定

从 arraylist 创建哈希映射元组 - Java

从 arraylist 创建哈希映射元组 - Java

慕无忌1623718 2021-09-29 13:22:42
我正在尝试迭代我在 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个赞

我将在这里做出一些疯狂的猜测,因为从这个问题中,初始数据结构和所需的输出都不清楚:

  1. 表示的表格数据TList<List<String>>

  2. 您想按每列分组,计算列中出现的值等于 的行数Yes和出现的值等于Noplay行数

如果这些假设成立,您可以按如下方式实现:

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列始终是每一行的最后一列,并且既没有空值也没有缺失值。字符串也必须修剪,即没有空格、制表符等。


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信