Глубокая копия ArrayList - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно сделать глубокую копию ArrayList типа long как для методов доступа, так и для методов мутатора. Я пытался найти это, но что бы я ни нашел и не попробовал, мои тесты показывают, что мутатор не копирует полностью ArrayList. Этот список ArrayList называется «транзакциями» и содержится в подклассе «CustomerData», суперклассом которого является «PersonData».

Вот мой мутатор:

    public ArrayList<Long> getTransactions() {
        if (transactions == null) throw new IllegalArgumentException();


        final ArrayList<Long> copy = new ArrayList<Long>(transactions.size());
        for(Long l : transactions) {
            copy.add(new Long(l.intValue()));
        }
        return copy;
    }

Что насчет неправильного ?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

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

List<Long> transactions = Arrays.asList(1L, 2L, 3L, 4L);

List<Long> copy = new ArrayList<>(transactions);
0 голосов
/ 06 мая 2020

Клонирование объектов перед их добавлением. Например, вместо newList.addAll(oldList);

for(Person p : oldList) {
    newList.add(p.clone());
}

при условии, что clone правильно переопределено в Person.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...