0

2 つのリストがあり、list1 を繰り返しています。list1 の現在の項目が list2 に存在する場合、list1 のプロパティを変更する必要があります。

リストは単なるオブジェクトのリストです:

list1 = [ObjectVO, ObjectVO]
list2 = ['w', 'x', 'y', 'z']

ObjectVO.getId() は、「w」、...「z」などの文字列を返します。

私のコードは次のとおりです。

Iterator it = list1.iterator();
while(it.hasNext()){
    objVO = (ObjectVO) it.next();
    if(list2.contains(objVO.getId()){
        objVO.setFlag(true);  
    }
}

ここでの問題は、objVO.setFlag(true) が常に実行されていることです。list2 には list 1 のすべてのアイテムが含まれるようですが、そうではありません。list 2 は list1 のサブセットにすぎないため、それらすべてに対して true と評価されるべきではありません。

これを修正するにはどうすればよいですか、またはこれを達成するためのより良い方法はありますか?

4

2 に答える 2

3

2 番目のリストを反復処理しないのはなぜですか?,

for(ObjectVO objVO : list2){
    objVO.setFlag(list1.contains(objVO.getId()));
}
于 2013-03-21T20:30:47.607 に答える
0

2 番目のリストを同じデータ型に変換して比較できるようにし、Apache Commons コレクションを使用して交差点を見つけることができます。すべての ObjectVO.getId() を 1 つのリストに入れるだけです。

Collection intersection = CollectionUtils.intersection(a, b);
于 2013-03-21T20:47:46.423 に答える