读取文件并映射到Map <String,List <String >>

Rah*_*lli 0 java list hashmap tokenize

所以,我有一个以下列方式编写的文件:

X - Y.

A - B.

X - Z.

A - C.

X - L.

A - N.

基本上,两个实体之间存在关系.

我想将其映射到地图上,以便可以将一个唯一键映射到值列表中.

我想要的是这样的:{X = [Y,Z,L]},{A = [B,C,N]}等......


我认为存储它们的最佳方式是在Map<String, List<String>>.

我记住了以下算法:

  • 使用Files.readAllLines()以将行存储为a来读取传入文件List<String>.
  • 记号化使用线String.split()或StringTokenizer成List<List<String>>

这之后我该怎么办?我只需要一个算法,请注意,这不是家庭作业.我正在为自己编写一个简单的Java应用程序来标记这些文件,并将它们导出为CSV.

提前致谢!

小智 5

我的第一个想法是这样做:

    List<String> lines = new ArrayList<>(Arrays.asList("X - Y", "A - B", "X - Z", "A - C", "X - L", "A - N"));
    Map<String, List<String>> pairs = new HashMap<>();
    for (String line : lines) {
        String[] pair = line.split("-");
        String key = pair[0].trim();
        String val = pair[1].trim();
        List<String> valueFromMap = pairs.get(key);
        if(valueFromMap == null) {
            valueFromMap = new ArrayList<>();
        }
        valueFromMap.add(val);
        pairs.put(key, valueFromMap);
    }
    System.out.println(pairs.toString());
Run Code Online (Sandbox Code Playgroud)