SeleniumWebDriver—在java中,将基于名称和源的对象列为键

iyfamqjs  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(322)

如何根据列表项的组合对列表元素进行分组。我已经从csv读取了测试数据并将其存储在i列表中。

String file = test.csv;
List<String[]> content = new ArrayList<String[]>();
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
  String line = "";
  while ((line = br.readLine()) != null) {
    content.add(line.split(","));
  }

现在列表包含了数据,如何根据名称和源对项目进行分组,并存储在列表中。
这是我的示例csv文件

w8rqjzmb

w8rqjzmb1#

你可以使用新的io类 Path 以及 Files 以字符串流的形式读取输入文件,然后将流api与 Collectors.groupingBy 以及 Collectors.mapping 得到一张像这样的Map Map<List<String>, List<String>> :

Map<List<String>, List<String>> map = Files.lines(Path.of(csvFileName))        // get stream of lines from the input CSV file
        .map(s -> s.split(","))  // split a line into columns
        .collect(Collectors.groupingBy(
            // a key is a list of `name` and `source` columns
            arr -> Arrays.asList(arr[0], arr[2]),
            // a value is a list of field names in column #1
            Collectors.mapping(arr -> arr[1], Collectors.toList())
        ));
System.out.println(map);

输出示例:

{[John Lennon, wiki]=[name, birthDate], [Paul McCartney, wiki]=[name, birthDate, birthPlace]}

相关问题