Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

自定义类项列表的java循环迭代器/生成器

假设我有一个自定义类:

public class CustomClass {
    private String name;
    private String data;

    public CustomClass(String name, String data) {
        this.name = name;
        this.data = data;
    }
}

我还有一个自定义类对象的列表:

CustomClass[] list = new CustomClass[] {
    new CustomClass("Item 1", "data"),
    new CustomClass("Item 2", "data"),
    new CustomClass("Item 3", "data"),
    new CustomClass("Item 4", "data"),
    new CustomClass("Item 5", "data"),
};

我如何创建一个迭代器(或者更确切地说,是生成器)来遍历列表K次(K>;list.length),每次给我下一个元素

我更喜欢“内联”解决方案(不创建任何新类)

比如说,我需要一个接一个地获取CustomClass列表项K=7次。解决方案应检索以下CustomClass对象:

  • 项目1
  • 项目2
  • 项目3
  • 项目4
  • 项目5
  • 项目1
  • 项目2

共 (2) 个答案

  1. # 1 楼答案

    使用索引模数组长度:

    for( int i = 0; i < K; i++ ) {
       list[ i % list.length ];
    }
    

    当第一个索引(这里称为i)大于或等于列表长度时,它将“重置”它,因为操作模(%)返回整数除法后的余数

    该解决方案不引入任何类

  2. # 2 楼答案

    一个简单的方法是:

    import com.google.common.collect.Iterables
    import com.google.common.collect.Iterators;
    
    Integer[] arr = {1,2,3,4,5};
    Iterator<Integer> iter = Iterators.limit(Iterables.cycle(arr).iterator(),7) ;