有 Java 编程相关的问题?

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

java如何按优先级进行迭代?

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

编辑:我不需要这个特定问题的答案,我只是问如何在ExampleClass中有一个迭代器内部类 这将首先遍历具有一个属性的项,然后遍历其他属性


共 (3) 个答案

  1. # 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. # 2 楼答案

    您可以使用以下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。如果是,则ID为偶数,并运行所需的代码。然而,如果余数是1,那么这个数字是奇数

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

    例如:5 / 2 = 2。剩下的是1。因此,数字5是奇数

  3. # 3 楼答案

    如果您需要以任何特定的顺序遍历它们,那么在循环遍历它们之前,您需要对项目数组进行排序。如何进行这项工作取决于您的应用程序和订购需求。我建议做一些类似伪代码的事情:

    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[]