【问题标题】:Load data dynamically into HashMap动态加载数据到 HashMap
【发布时间】:2016-09-15 07:23:02
【问题描述】:

我正在从 CSV 文件中读取数据并希望将其存储到 hashMap 中。有 3 列,它们都是字符串。我正在使用此代码:

listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String,List<String>>();

    InputStream inputStream = getResources().openRawResource(R.raw.photographers);
    CSVReader csv = new CSVReader(inputStream);
    List<String[]> data = csv.read();
    List<String> info = new ArrayList<String>();

    for(String[] children : data){
        info.add(children[1]);
        info.add(children[2]);
    }

    //fill data for the child

    for (String[] line : data) {
        listDataHeader.add(line[0]);
        listDataChild.put(listDataHeader.get(0),info);
    }

listdataChild 应该在 CSV 中保留第 2 列和第 3 列的信息。目前,它不止一次地加载该信息。我欢迎任何想法,谢谢!

【问题讨论】:

  • 你的问题不是很清楚,在你的CSV第一列是你的标题?并且您想将地图中的第 2 列和第 3 列保留为值,并将第一列保留为地图中的键?
  • 是的,完全正确。第一列保存需要进入 listDataHeader(键)的信息,而接下来的两个函数作为值,需要存储在 listdataChild 中。谢谢!

标签: java csv hashmap loaddata


【解决方案1】:

您只需一次迭代即可完成此操作。

for (String[] line : data) {
    List<String> info = new ArrayList<String>();
    info.add(line[1]);
    info.add(line[2]);
    listDataChild.put(line[0], info);
}

在这里,您正在遍历 csv 的行并创建一个列表,并将您的第二列和第三列添加到该列表中,并将该列表添加到地图中。

【讨论】:

  • 感谢您的回答!但是我应该在哪里说 info 存储来自第 2 列和第 3 列的信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多