1

から要素を削除する必要ArrayListがありますが、まだ行っていません。私が削除しなければならない要素は、 にもありますArrayList。つまり、ある配列リストを別の配列リストから削除する必要があります。たとえば、

ArrayList<String> arr1= new ArrayList<String>();
ArrayList<String> arr2 = new ArrayList<String>();
arr1.add("1"); 
arr1.add("2"); 
arr1.add("3"); 

arr2.add("2"); 
arr2.add("4"); 

ここで、arr1 から arr2 にある要素を削除する必要があります。では、最終的な答えは 1 と 3 です。何をする必要がありますか?

4

5 に答える 5

11

Javaの 2 つのリストの共通要素を削除する


以下のコードを使用

List<String> resultArrayList = new ArrayList<String>(arr1);
resultArrayList.removeAll(arr2);

またはによって行うことができます

arr1.removeAll(arr2)

SOコメントの後

次のコードを使用しました

ArrayList<String> arr1= new ArrayList<String>();
        ArrayList<String> arr2 = new ArrayList<String>();
        arr1.add("1"); 
        arr1.add("2"); 
        arr1.add("3"); 

        arr2.add("2"); 
        arr2.add("4"); 

        System.out.println("Before removing---");
        System.out.println("Array1 : " + arr1);
        System.out.println("Array2 : " + arr2);
        System.out.println("Removing common ---");
        List<String> resultArrayList = new ArrayList<String>(arr1);
        resultArrayList.removeAll(arr2);                
        System.out.println(resultArrayList);

出力を次のように取得します

Before removing---
Array1 : [1, 2, 3]
Array2 : [2, 4]
Removing common ---
[1, 3]

では、あなたの側で何が機能していないのでしょうか?

あるリストの重複するコンテンツを別のリストから削除するにはどうすればよいですか?についてもっと読む

于 2013-08-21T10:18:40.063 に答える
0

removeAll() 関数を使用できます

/**
 * Removes from this list all of its elements that are contained in the
 * specified collection.
 *
 * @param c collection containing elements to be removed from this list
 * @return {@code true} if this list changed as a result of the call
 * @throws ClassCastException if the class of an element of this list
 *         is incompatible with the specified collection
 * (<a href="Collection.html#optional-restrictions">optional</a>)
 * @throws NullPointerException if this list contains a null element and the
 *         specified collection does not permit null elements
 * (<a href="Collection.html#optional-restrictions">optional</a>),
 *         or if the specified collection is null
 * @see Collection#contains(Object)
 */
public boolean removeAll(Collection<?> c) {
    return batchRemove(c, false);
}
于 2013-08-21T10:30:45.237 に答える
0

newarrを最終的なソート済み配列として取得

for(int i=0;i<arr1.size();i++)
    {
    for(int j=0;j<arr2.size();j++)
    if(!arr1.get(i).contains(arr2.get(j)))
    {
    arr.add(arr1.get(i));
    }
    }
于 2013-08-21T10:18:49.677 に答える