gpt4 book ai didi

java - 如何使用 Java 从流中分割字符串

转载 作者:行者123 更新时间:2023-12-02 02:55:55 26 4
gpt4 key购买 nike

我有一个巨大的 .txt 文件,格式如下:

29 clueweb12-1500wb-39-00001
19 clueweb12-1500wb-39-00002
20 clueweb12-1500wb-39-00003

我需要逐行读取该文件并将其分成两部分。第一部分是分数(29,19,20),第二部分是docIds (clueweb12-1500wb-39-00001)。我使用流逐行读取 txt 文件,但是如何将这两部分放入 String 中?

Stream<String> lines = File.lines(Paths.get("path-to-file");
lines.forEach(s -> s.split(" "));

`

最佳答案

为了使代码更清晰,您可以使用简单的 foreach 循环:

Stream<String> lines = File.lines(Paths.get("path-to-file");
lines.forEach(s -> s.split(" "));

/**
* Takes a stream, splits group by first part of the string:
*/
public Map<Integer, List<String>> split(Stream<String> a) {

Map<Integer, List<String>> result = new HashMap<>();

a.forEach(s -> {
String[] pair = s.split(" ");

Integer key = Integer.valueOf(pair[0]);
String value = pair[1];

// as 4castle suggested - to avoid unnecessary computation
result.computeIfAbsent(key, key -> new ArrayList<>());

result.get(key).add(value);
});

return result;
}

或者您可以直接在流处理中映射输入:

a.map(s -> s.split(" "))
.forEach(pair -> {
Integer key = Integer.valueOf(pair[0]);
String value = pair[1];

result.putIfAbsent(key, new ArrayList<>());
result.get(key).add(value);
});

关于java - 如何使用 Java 从流中分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072315/

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