1

サイズの異なる2つの異なるアレイリストを比較する必要があります。

これは2つのループで実行できますが、イテレータを使用する必要があります。

2番目のループは、n回ではなく1回だけ繰り返します。

while (it.hasNext()) {
    String ID = (String) Order.get(i).ID();
    j = 0;              
    while (o.hasNext()) {   
        String Order = (String) Order.get(j).ID();
        if (myOrder.equals(Order)) {
            //do sth
        }
        j++;
        o.next();
    }
    i++;
    it.next();
}
4

4 に答える 4

4

イテレータは、次の方法よりもはるかに簡単な方法で使用できます。

Iterator<YourThing> firstIt = firstList.iterator();
while (firstIt.hasNext()) {
  String str1 = (String) firstIt.next().ID();
  // recreate iterator for second list
  Iterator<YourThing> secondIt = secondList.iterator();
  while (secondIt.hasNext()) {
    String str2 = (String) secondIt.next().ID();
    if (str1.equals(str2)) {
      //do sth
    }
  }
}
于 2013-01-18T10:54:32.447 に答える
2

たとえばo、反復ごとにイテレータをインスタンス化する必要があります。it

while (it.hasNext()) {
   Iterator<String> o = ...
   while (o.hasNext()) {
     // ...
   }
}

Nb。インデックス変数は必要ありませんj。を呼び出すだけo.next()で、イテレータによって参照されるリストの要素を取得できます。

于 2013-01-18T10:43:03.357 に答える
1
Iterator<Object> it = list1.iterator();
while (it.hasNext()) {
    Object object = it.next();
    Iterator<Object> o = list2.iterator();
    while (o.hasNext()) {   
        Object other = o.next();
        if (object.equals(other)) {
            //do sth
        }
    }
}

2iteratorsつのリストがあるため2つobject、次の項目をチェックしてそれぞれを取得し、次の項目(hasNext()およびnext())を取得します。

于 2013-01-18T11:00:28.097 に答える
1

どうですか

List<String> areInBoth = new ArrayList(list1);
areInBoth.retainAll(list2);
for (String s : areInBoth)
    doSomething();

適切なもの(例ではID)を比較するには、オブジェクトのequalsメソッドを調整する必要があります。

于 2013-01-18T10:51:40.607 に答える