我想读取一个包含空格分隔值的文本文件。值是整数。如何读取并将其放入数组列表?
这是文本文件内容的示例:
1 62 4 55 5 6 77
我想将它包含在arraylist中[1, 62, 4, 55, 5, 6, 77]。如何用Java做到这一点?
[1, 62, 4, 55, 5, 6, 77]
你可以用来Files#readAllLines()将文本文件的所有行都放入List<String>。
Files#readAllLines()
List<String>
for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) { // ... }
教程:基本I / O>文件I / O>读取,写入和创建文本文件
I / O>
你可以用来基于正则表达式String#split()拆分a String部分。
String#split()
a String
for (String part : line.split("\\s+")) { // ... }
教程:数字和字符串>字符串>操纵字符串中的字符
你可以使用Integer#valueOf()将转换String为Integer。
Integer#valueOf()
String
Integer
Integer i = Integer.valueOf(part);
教程:数字和字符串>字符串>在数字和字符串之间转换
你可以使用List#add()将元素添加到中List。
List#add()
List
numbers.add(i);
教程:接口>列表接口
因此,简而言之(假设文件没有空行,也没有尾随/前导空格)。
List<Integer> numbers = new ArrayList<>(); for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) { for (String part : line.split("\\s+")) { Integer i = Integer.valueOf(part); numbers.add(i); } }
如果你碰巧已经使用Java 8,那么你甚至可以为此使用Stream APIFiles#lines()。
List<Integer> numbers = Files.lines(Paths.get("/path/to/test.txt")) .map(line -> line.split("\\s+")).flatMap(Arrays::stream) .map(Integer::valueOf) .collect(Collectors.toList());