微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从大小为 100 的 Iterator<String> 每次迭代 10 个元素

如何解决如何从大小为 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));
    }
,

您可以使用返回 ListIteratorList#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 举报,一经查实,本站将立刻删除。