当前位置: 首页 > 知识库问答 >
问题:

CSV中的LinkedHashMap未获取所有条目

岑彬炳
2023-03-14
public static LinkedHashMap<String, ArrayList<String>> runningOrderMap(String filename) throws IOException {
        LinkedHashMap<String, ArrayList<String>> linkedHashMap = new LinkedHashMap<>(50);
        String currentLine = ""; //init iterator variable
        String[] valuesTMP;
        try {
            bufferedReader = new BufferedReader(new FileReader(filename));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while((currentLine = bufferedReader.readLine()) != null){
            valuesTMP = currentLine.split(", ");
            ArrayList<String> values = new ArrayList<>();
            String key = valuesTMP[0].split("\t")[0].trim();
            values.add(valuesTMP[0].split("\t")[1].trim());
            for(int i = 1; i < valuesTMP.length; i++){
                values.add(valuesTMP[i]);
                System.out.println(valuesTMP[i]);
                linkedHashMap.put(key, values);
            }
        }
        System.out.println("linked hashmap:"+linkedHashMap.keySet().size());
        return linkedHashMap;
    }
title   content, content2

title example    content, content2, content3

title example three   content, content2

title example    content, content2
title example two   content

共有1个答案

高森
2023-03-14

看来我知道哪里出了问题)

尝试将行LinkedHashMap.Put(key,values);移出内部for循环,如下所示:

public static LinkedHashMap<String, ArrayList<String>> runningOrderMap(String filename) throws IOException {
    LinkedHashMap<String, ArrayList<String>> linkedHashMap = new LinkedHashMap<>(50);
    String currentLine = ""; //init iterator variable
    String[] valuesTMP;
    try {
        bufferedReader = new BufferedReader(new FileReader(filename));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    while((currentLine = bufferedReader.readLine()) != null){
        valuesTMP = currentLine.split(", ");
        ArrayList<String> values = new ArrayList<>();
        String key = valuesTMP[0].split("\t")[0].trim();
        values.add(valuesTMP[0].split("\t")[1].trim());
        for(int i = 1; i < valuesTMP.length; i++){
            values.add(valuesTMP[i]);
            System.out.println(valuesTMP[i]);
        }
        linkedHashMap.put(key, values); // <--this line was moved out from internal for loop
    }
    System.out.println("linked hashmap:"+linkedHashMap.keySet().size());
    return linkedHashMap;
}

因为您知道,只有在内容有多个部分时,才会执行此内部for循环

 类似资料:
  • 我知道,要获取地图,我可以使用fetchMap,但它不支持LinkedHashMap,我想保持由orderBy创建的插入顺序。 我试过了 但是字段1和字段2部分给了我以下错误。 无法解析“T”中的方法“field1” 希望有人能帮我~ 谢谢 解决方案: 基于@Lukas的回答,我尝试了几次,发现必须做到以下几点: > 在方法中,所有字段都必须有一个类型,除了那些计算的,其中添加类型会抛出在字段列表

  • 我尝试在Kafka中创建新主题时启动动态消费者,但动态启动的消费者总是缺少起始/第一条消息,但从那里开始消费消息。我正在使用kafka-python模块,并且正在使用更新的KafkaConsumer和KafkaProducer。 请建议一些解决这个问题的方法,或者我必须包含在我的生产者和消费者实例中的任何配置。

  • 问题内容: 我有大型CSV,我只对这些行的子集感兴趣。特别是,我想读取在满足特定条件之前发生的所有行。 例如,如果将产生数据框: 有什么方法可以读取csv中的所有行,直到col B超过10。在上面的示例中,我想读入: 我知道在读入数据帧后如何将这些行扔掉,但是到现在为止,我已经花了所有的计算来读入它们。在读取csv之前,我无法访问最后一行的索引请不要跳过脚) 问题答案: 您可以分批读取csv。由于

  • 我有一个FutureBuilder(很高兴加载)从Firebase获取我的DocumentSnapshot列表,但问题是如果我推送/弹出屏幕,它会一遍又一遍地重建它。为了解决这个问题,我最终将它放在了上,但我有一个问题,我有时无法从中获取所有文档。 我有一个按钮可以启用国家/地区筛选和禁用,每次按下它几乎都会立即显示我的文档,例如,我总共筛选了11个国家/地区,筛选了5个国家/地区,但有时我不会全

  • 本文向大家介绍MySQL获取所有分类的前N条记录,包括了MySQL获取所有分类的前N条记录的使用技巧和注意事项,需要的朋友参考一下 比如有文章表 Article(Id,Category,InsertDate),现在要用SQL找出每种类型中时间最新的前N个数据组成的集合,一段不错的代码,留存备用 @N 就是你要取多少条 下面是我用到了一个产品分类表中,superId是大分类,prcid是产品分类。能

  • 问题内容: 我有以下五个表: 互联网服务提供商 产品 联系 添加在 插件/产品(多对多关系的数据透视表)。 每个产品都链接到一个ISP,每个连接都列在一个产品上。通过使用数据透视表,每个产品可以具有许多附加组件(该数据透视表仅具有2个字段,一个字段用于产品ID,一个字段用于AddOn ID)。 我感兴趣的结果是列出的插件的每个连接(为此,我使用MySQL的GROUP_CONCAT,以逗号分隔列表的