迭代具有相同索引的多个数组列表

时间:2013-06-24 12:51:25

标签: java

我是Java的初学者。我有3个ArrayLists,并且所有ArrayLists都包含与特定主题相关的数据,因此具有相同的长度。我想遍历数组并执行一些操作,如下所示:

  public void example(){
  ArrayList<Long> ID = new ArrayList<Long>;
  ArrayList<Integer> AcNo = new ArrayList<Integer>;
  ArrayList<Integer> Vnum = new ArrayList<Integer>;

  //get ID and AcNo from user, compare it in the ArrayList, get the corresponding Vnum 
  // for the Vnum from previous step, compare it with the next Vnum and get corresponding ID and AcNo until some *condition* is satisfied.

  }

我如何用Java做到这一点?我看到了Iterator的例子,但我不确定这样做的正确方法!请帮忙。

2 个答案:

答案 0 :(得分:2)

如果所有三个列表的长度相同,则使用带索引的 for loop 对其进行迭代。相同的索引代表三个列表中每个列表中的相同用户:

for (int i=0; i<ID.size(); i++) {
    Long userId= ID.get(i);
    Integer userAcNo= AcNo.get(i);
    Integer userVnum= Vnum.get(i);

    //if the next user exist, get the next user
    if (i + 1 < ID.size()) {
        Long nextUserId= ID.get(i+1);
        Integer nextUserAcNo= AcNo.get(i+1);
        Integer nextUserVnum= Vnum.get(i+1);

        //now compare userVariables and nextUser variables
    }
}

答案 1 :(得分:2)

更好的方法是拥有一个Subject对象或类似的单个列表,以便每个Subject包含有关其自身的所有相关数据。

class Subject {
    private final long id;
    private final int acNo;
    private final int vnum;

    /* Appropriate constructor and getters... */
}

您可能还需要考虑重命名字段,使其更具描述性。