gpt4 book ai didi

java - 如何从 arraylist 中制作 HashMap ,其中具有重复值的一列作为键,相应的行作为值

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:53 24 4
gpt4 key购买 nike

我知道这是一个基本问题,但由于某种原因,尽管过去几天我一直在尝试和(寻找解决方案),但我无法在java中解决这个问题......我有一个制表符分隔的文件(超过 8000 行的大文件),具有多个列(其中很少有列的元素之间有空格和“:”)。我已读取此文件,并通过逐行读取文件将其存储为 ArrayList

String filepath = "/home/path/T1.csv"; 
ArrayList<String[]> listOfLines = new ArrayList<>();
ArrayList<String> column8 = new ArrayList <>();
Scanner scan = new Scanner(new File(filepath)) ;

while(scan.hasNextLine())
{String line = scan.nextLine();listOfLines.add(line.split("\\t+"));column8.add(line.split("\\t+"));}

在第 8 列中,我有重复的"is"、“否”和“也许”值(很少是大写,很少是小写)。我必须创建一个 HashMap(对替代方法的建议表示赞赏),其中该列的值是键,与该键对应的整行是值,即一个键多个值,以便最终结果是基于第 8 列的公共(public)条目“是、否和可能”捆绑行。

输入文件中存在这种格式的行,并且某些地方的列数(用制表符分隔)超过 8

 1.456  Fri Jun 01 16:38:01 IST 2018    APB electron microscopy P5299   raw processed   no   
Incorrect Term. {"electron microscopy"}
1.5457 Fri Jun 01 12:16:03 IST 2018 JIAU Crystallography P1189 raw raw yes Term
too broad. {"Rietveld refinements"}
1.557 Fri Jun 01 12:16:03 IST 2018 JAU positron collider P72411 processed processed maybe
1.567 Fri Jun 01 12:16:04 IST 2018 JAU positron collider P72411 processed processed maybe

我想要的结果是根据第 8 列的值捆绑行,如下所示

yes bundle
1.5457 Fri Jun 01 12:16:03 IST 2018 JIAU Crystallography P1189 raw raw yes Term
too broad. {"Rietveld refinements"}

no bundle
1.456 Fri Jun 01 16:38:01 IST 2018 APB electron microscopy P5299 raw processed no
Incorrect Term. {"electron microscopy"}
maybe bundle
1.557 Fri Jun 01 12:16:03 IST 2018 JAU positron collider P72411 processed processed maybe
1.567 Fri Jun 01 12:16:04 IST 2018 JAU positron collider P72411 processed processed maybe

最佳答案

你可以这样做:

// toLowerCase for case insensitive comparison of column 8
listOfLines.forEach(x -> x[7] = x[7].toLowerCase(Locale.US));
Map<String, List<String[]>> map = listOfLines.stream()
.collect(Collectors.groupingBy(s -> s[7]));

这会产生 Map<String, List<String[]>> 。如果您想要Map<String, List<String>> ,您可以轻松连接每个字符串数组中的字符串并将它们放入新的映射中。

关于java - 如何从 arraylist 中制作 HashMap ,其中具有重复值的一列作为键,相应的行作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52109495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com