gpt4 book ai didi

java - Java从File中读取一定数量的元素

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

我有一个文本文件,一行中只有几个数字;

10 20 30 40 50

我的座右铭是一次读取 3 个数字并对其执行一些操作。请帮助我学习完成这项工作的最佳方法。

我需要以这种方式处理数字,

10 20 30

20 30 40

30 40 50 .....

如果我的文本文件中有一行包含 100000 个数字,是否建议将整个文件加载到内存中并继续遍历和执行操作,或者是否最好将整行复制到数组中并对其执行操作?

最佳答案

这里有一个简单的方法:

    int a, b, c;

// try with resources, scanner will be closed when we are done.
try (Scanner scan = new Scanner(new File("input.txt"))) {
// get the first three ints.
a = scan.nextInt();
b = scan.nextInt();
c = scan.nextInt();
doSomething(a, b, c);
// while there are more
while (scan.hasNext()) {
a = b;
b = c;
c = scan.nextInt();
doSomething(a, b, c);
}

} catch (FileNotFoundException | NoSuchElementException e) {
e.printStackTrace();
}

这将一次读取一个数字,并在每次读取之间执行一些操作。

如果你想在执行操作之前读取所有数字,可以使用数组列表。

    ArrayList<Integer> list = new ArrayList<>();
// try with, scanner will be closed when we are done.
try (Scanner scan = new Scanner(new File("input.txt"))) {
// while there are more
while (scan.hasNext()) {
list.add(scan.nextInt());
}

} catch (FileNotFoundException | NoSuchElementException e) {
e.printStackTrace();
}

然后您可以迭代它们。

    for (int i : list) {

}

如果您知道有多少个数字,则可以使用 IntBuffer 而不是 ArrayList

对于只有 100000 个值,如果您根据需要加载它们或先加载它们可能没有太大区别。如果您的操作需要很长时间,最好将它们全部加载。

关于java - Java从File中读取一定数量的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578715/

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