java - 如何从arraylist中制作一个哈希图,其中一列具有重复值的键是键,对应的行是值
问题描述
我知道这是一个基本问题,但由于某种原因,尽管过去几天我一直在尝试和(寻找解决方案),但由于某种原因我无法在 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 列中,我有重复值“是”、“否”和“可能”(大写字母很少,小写字母很少)。我必须创建一个 HashMap(对替代方法的建议赞赏),其中该列的值是键,并且与此键对应的整行是值,即一个键多个值,因此最终结果是根据第 8 列的常见条目“是、否和可能”捆绑行。
输入文件有这种格式的行,并且列数(由制表符分隔)在某些地方超过了 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>>
,你可以很容易地连接每个字符串数组中的字符串并将它们放在一个新的映射中。
推荐阅读
- firebase - 在我计划调用它之前调用 async
- ios - 将浮点数组转换为 Wav 文件 Swift
- r - 如何在 r 中编写一个选择向量的一个或多个元素的条件(如果,ifelse)?
- python - Visual Studio Code 中的 discord py 未检测到扩展
- amazon-web-services - 与 aws 提供程序区域不同的 terraform aws_s3_bucket 区域在同一提供程序区域中创建
- reactjs - ReactJS 从 api json 文件中获取数据
- python - 插入具有自己唯一“_id”值的文档时出现 BulkWriteError 异常
- c - 变量只显示其最近的值
- python - 我在用python制作一本书时遇到了一些问题,它显示操作系统错误
- regex - 我们可以从某个位置“重新启动”正则表达式以重新匹配模式吗?