0

同じ要素を含む場合と含まない場合がある2つの配列リスト listA と listB があります。例えば:

listA= [1,2,3] &
listB=[2,3,4]

2 つの配列リストを比較し、listB ではなく listA に存在する要素を listB に追加する必要があります。また、listB に存在する他の要素が listA にない場合は、listB から削除する必要があります。

Javaでこれをコーディングする方法を教えてください。

必要に応じて Iterator メソッドを使用することをお勧めします。

4

3 に答える 3

1

あなたの説明は、セットで作業したいことを示唆しています。たとえば、ある要素が A に 2 回含まれているが、B には 1 回だけ含まれているとします。Bに一度追加する必要がありますか?

あなたの質問に対する最も簡単な答えは、

List listA = ...
List listB = ...

listB.clear();
listB.addAll(listA);

ただし、できる順序を維持したいと仮定します。

List listA = ...
List listB = ...
Set setA = new HashSet(listA);
setA.removeAll(listB);

Set setB = new HashSet(listB);
setB.removeAll(listA);

listB.addAll(setA);
listB.removeAll(setB);

注: 要素の A に B より多くの要素がある場合、これはエントリを追加せず、B に A より多くの要素がある場合、エントリを削除しません。

于 2012-10-16T14:00:41.417 に答える
0

これを試して

for(int i : listA)
    if(!listB.contains(i)) listB.add(i);
for(int j : listB)
    if(!listA.contains(j)) listB.remove(j);

さもないと

Arrays.sort(listA); Arrays.sort(listB);
for(int i = 0; i < listA.length(); i++)
{
   if(!listB.contains(listA.get(i))) listB.add(listA.get(i));
   if(!listA.contains(listB.get(i))) listB.remove(listA.get(i));
}
于 2012-10-16T13:59:34.610 に答える
0

コードを書くための簡単な手順

最初に削除を実行します

   Iterate ListB
    For each element in ListB, check if it is present in List A
      If Not, delete from ListB
      else continue
 Close your loops

その後追加

Iterate ListA
  For each element in ListA, check if it is present in List B
    If Not, add to ListB
    else continue
Close your loops

サンプルコード:

    List<Integer> listA = ..
    List<Integer> listB = ..

    for(Integer intB: listB)
      if(!listA.contains(intB)){
         listB.remove(intB);
      }
    }   

   for(Integer intA: listA)
      if(!listB.contains(intA)){
         listB.add(intA);
      }
    }   
于 2012-10-16T13:59:59.930 に答える