Man*_*lis 3 java foreach loops
我是 Java 初学者和地理信息学学生。
我使用 XTF 图像,它的工作原理类似于 TIFF。这个图像存储了大约 20000 行称为 pings 的几个信息:坐标、开始时间、停止时间......我在 Intellij 上使用的处理方法变得太重,但效果很好。我想将存储在我的 XTF 图像中的信息切成两个:一张图像带有 10000 个第一个 ping,另一个带有 20000 个最后一个 ping。后来我会收集这两个图像。我的问题很简单:如何使用“for each”循环来订购限制 (<=10000) ?我将信息存储在一个 csv 文件中。
for (XtfPing ping : xtf.getPings())
{
writer.write( Double.toString( ping.x) );
writer.write( "," );
writer.write( Double.toString( ping.y) );
writer.write( "\n" );
}
writer.close();
Run Code Online (Sandbox Code Playgroud)
如果必须使用增强的 for 循环,则必须引入自己的计数器以测试迭代次数:
int limit = 0;
for (XtfPing ping : xtf.getPings())
{
if (limit <= 10000) {
// do something
} else {
// do something else
}
limit++;
}
Run Code Online (Sandbox Code Playgroud)
另一种方法(如果getPings()返回支持随机访问的集合(例如列表)或数组)是将增强的 for 循环替换为传统的 for 循环,其中内置了迭代次数。
例如,如果getPings返回一个List:
for (int i = 0; i < xtf.getPings().size(); i++)
{
XtfPing ping = xtf.getPings().get(i);
if (i <= 10000) {
// do something
} else {
// do something else
}
}
Run Code Online (Sandbox Code Playgroud)
I know this doesn't fit exactly the OP's situation, but maybe this will help someone else looking to implement an iterate limit using Java 8:
List<Object> myList = ...
List<Object> first10000 = myList.stream().limit(10000).collect(Collectors.toList());
for (Object obj : first10000) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
or more simply:
List<Object> myList = ...
myList.stream().limit(1000).forEach(o -> {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11481 次 |
| 最近记录: |