如何优先迭代?

时间:2019-03-21 00:48:52

标签: java iterator

在Java中,我有一个名为ExampleClass的类,该类具有一个称为Item的类的集合。每个项目在称为ID的字段中都有一个整数。如何让ExampleClass的迭代器遍历具有偶数ID的项,然后遍历具有奇数ID的项。

编辑:我不需要这个特定问题的答案,我一般是在问如何在ExampleClass中使用Iterator内部类 它将首先遍历具有一个属性的项目,然后遍历其他属性。

3 个答案:

答案 0 :(得分:0)

您可以使用以下if条件检查ID是否为奇数:

for(int i = 0;i < maxID;i++) { //I'm not sure what your maximum ID is.
  if(Item.ID % 2 == 0) {
    //Iterate
  }
}

然后,您可以对奇数ID执行相同的操作:

for(int i = 0;i < maxID;i++) { //I'm not sure what your maximum ID is.
  if(Item.ID % 2 == 1) {
    //Iterate
  }
}

代码Item.ID % 2将ID除以2,然后返回余数。在if语句中,它将检查余数是否为0。如果为0,则ID为偶数,并运行所需的代码。但是,如果余数为1,则数字为奇数。

示例:4 / 2 = 2。余数为0。因此,数字4是偶数。

示例:5 / 2 = 2。余数为1。因此,数字5是奇数。

答案 1 :(得分:0)

这里有两种方法可以用1个衬纸进行处理。

final Iterator<Item> it = items.stream().filter(i.getID() % 2 == 0).iterator();

for (final Item i : items.stream().filter(i.getID() % 2 == 0).toArray())
     doSomethingWith(i);

答案 2 :(得分:0)

如果您需要以任何特定的顺序遍历它们,则需要在遍历它们之前制作一组有序的项目。具体如何操作取决于您的应用程序和订购需求。我建议使用类似于伪代码的东西:

unsortedArray[]
sortedArray[]

for (every element in unsortedArray) {
    id = element.ID; //Or sort value calculated with some other method
    sortedIndexBeforeID = sortedArray.findLastElementWithIDBelow(id); //Get the index of sorted element with an ID just before ours.
    sortedArray.insert(element,sortedIDBeforeID); //Add the element into the sorted array at given index, pushing the rest of the elements around
}

sortedArray[]