如何解决如何从大小为 100 的 Iterator<String> 每次迭代 10 个元素
我有一个长度为 100 的字符串的迭代器。我想每次获取 10 个元素并将它们传递给另一个函数。 除了在循环内设置条件以计算 10 个元素之外,还有其他方法吗?
解决方法
这取决于您需要对它们做什么,但问题的编写方式似乎您希望一次处理十个项目。
Iterator<String> it = ... ;
List<String> nextBatch = nextBatchOf(it,10);
// do something with nextBatch
以及获取下一批元素的方法
List<String> nextBatchOf(Iterator<String> it,int size) {
List<String> batch = new ArrayList<>();
for (int i = 0; i < size && it.hasNext(); i++) {
batch.add(it.next());
}
return batch;
}
,
你可以标准数组 API:
int step = 10;
for (int i = 0; i < 10; i ++){
anotherFunction(Arrays.copyOfRange(source,i * step,(i + 1) * step));
}
,
您可以使用返回 ListIterator
的 List#listIterator(int index)
。
演示:
import java.util.List;
import java.util.ListIterator;
public class Main {
public static void main(String[] args) {
List<Integer> list = List.of(1,2,3,4,5,6,7,8,9);
final int SIZE = 3;
for (int i = 0; i < list.size(); i += SIZE) {
print(list,list.listIterator(i),SIZE);
}
}
static void print(List<Integer> list,ListIterator<Integer> lstItr,int size) {
for (int i = 0; lstItr.hasNext() && i < size; i++) {
System.out.print(lstItr.next() + "\t");
}
System.out.println();
}
}
输出:
1 2 3
4 5 6
7 8 9
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。