我是Java的初学者,也是一名地理测量学的学生。
我使用的是XTF图像,它的工作方式类似于TIFF。这个图像存储了大约20000行称为ping的行,其中包含几个信息:坐标、开始时间、停止时间……我在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();发布于 2015-05-13 21:31:06
如果必须使用增强的for循环,则必须引入自己的计数器来测试迭代次数:
int limit = 0;
for (XtfPing ping : xtf.getPings())
{
if (limit <= 10000) {
// do something
} else {
// do something else
}
limit++;
}另一种方法(如果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
}
}发布于 2018-04-26 04:56:14
我知道这并不完全适合OP的情况,但这可能会帮助其他希望使用Java 8实现迭代限制的人:
List<Object> myList = ...
List<Object> first10000 = myList.stream().limit(10000).collect(Collectors.toList());
for (Object obj : first10000) {
// do stuff
}或者更简单地说:
List<Object> myList = ...
myList.stream().limit(1000).forEach(o -> {
// do stuff
});发布于 2018-10-10 21:51:42
您可以使用int来递增每个循环,使用break;来停止for循环
int i = 0;
for (XtfPing ping : xtf.getPings()) {
(if i <= amountOfLoops) {
writer.write( Double.toString( ping.x) );
writer.write( "," );
writer.write( Double.toString( ping.y) );
writer.write( "\n" );
} else {break;}
}
writer.close();https://stackoverflow.com/questions/30216319
复制相似问题