java - 在JAVA中将CSV值转换为HashMap键值对

标签 java csv hashmap

嗨,我有一个的csv。我试图逐行读取csv并将值转换为哈希键值对。
这是代码:-

public class Example {
public static void main(String[] args) throws ParseException, IOException {
    // TODO Auto-generated method stub

    BufferedReader br = new BufferedReader(new FileReader("test.csv"));
    String line =  null;
    HashMap<String,String> map = new HashMap<String, String>();

    while((line=br.readLine())!=null){
        String str[] = line.split(",");
        for(int i=0;i<str.length;i++){
            String arr[] = str[i].split(":");
            map.put(arr[0], arr[1]);
        }
    }
    System.out.println(map);
 }
}


csv文件如下:-

1,"testCaseName":"ACLTest","group":"All_Int","projectType":"GEN","vtName":"NEW_VT","status":"ACTIVE","canOrder":"Yes","expectedResult":"duplicateacltrue"
2,"testCaseName":"DCLAddTest","group":"India_Int","projectType":"GEN_NEW","vtName":"OLD_VT","status":"ACTIVE","canOrder":"Yes","expectedResult":"invalidfeaturesacltrue"


当我运行此代码时,我得到此错误:-

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    Example.main(Example.java:33)


谁能帮我修复代码并找出程序中的错误?

最佳答案

第一次拆分时,在您的字符串中仅包含arr[0],因为1arr[1]中没有任何内容,因此将导致异常

如果不需要1,2等。您可以查看以下代码:

        String str[] = line.split(",");
        for(int i=1;i<str.length;i++){
            String arr[] = str[i].split(":");
            map.put(arr[0], arr[1]);
        }

关于java - 在JAVA中将CSV值转换为HashMap键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620834/

相关文章:

java - 将列表中的对象转换为子类

java - 如何使用 RxJava 收集异步响应

python - 使用 Python Pandas 对 csv 文件中的行进行排序

linux - 移动 csv 文件中的行 - Linux 命令

具有嵌套字符串或 ArrayList 的 Java HashMap

java - 在Java中以更简洁的方式实例化 map

java - java中的系统覆盖Keylistener

java - RxJava 过期订阅

python - 数据框中的替换功能删除的内容超出预期

java - 用数字替换符号