Получить разницу между двумя ArrayList с повторяющимися элементами

Мидо:

Я хочу, чтобы получить разницу между двумя списками. И это то, что я делаю.

oldList = [1,1,2,2,3,3,4,4]
newList = [1,2,3,5]

List<Integer> add = new ArrayList<>(newList);
List<Integer> remove = new ArrayList<>(oldList);
add.removeAll(oldList);
remove.removeAll(newList);

В результате я хочу

add = [5]
remove = [1,2,3,4,4]

Но removeAll()удалить все повторяющиеся элементы. Результаты , которые я получил

add = [5]
remove = [4,4]

Как я могу получить addи removeсписок? Спасибо.

Какой-то парень :

Вы будете иметь, чтобы написать некоторые из вашего собственного кода. Это не может быть сделано с использованием только библиотеки Java Collection в одиночку.

import java.util.ArrayList;

public class MyList<T> extends ArrayList<T>{

    public MyList(){
        super();
    }

    public void specialRemoveAll(T[] list) {
        for (T element : list) {
            remove(element); // This only removes the first entry that matches 'element', not all matches
        }
    }

}

рекомендация

отhttp://10.200.1.11:23101/article/api/json?id=400880&siteId=1