作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文本文件,一行中只有几个数字;
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/
我正在尝试开发右边框/Angular 具有特定 Angular (30°) 的表格。我见过一些类似的解决方案,但它们都无法在一定程度上发挥作用。如果我想从 30° 改变到 20°,我不想花太多力气。
我是一名优秀的程序员,十分优秀!