Temp хранить объект в Java - PullRequest
       13

Temp хранить объект в Java

0 голосов
/ 26 ноября 2011

Возможно ли временно сохранить объект?

Что я намерен сделать, это временно сохранить объект, удалить оригинал, а затем поместить временный объект в другое место?

Так что создается впечатление, что я эффективно "двигаю" объект.

Большое спасибо,

Ответы [ 4 ]

1 голос
/ 26 ноября 2011
Player tempPlayer = new Player();
tempPlayer.setValueA() = originalPlayer.getValueA();
// copy all values this way
team.remove(originalPlayer);
// more code
team2.add(tempPlayer);

Этот ответ выглядит нормально?

0 голосов
/ 17 февраля 2015

Я знаю, что немного опоздал, но для других, которые оказываются здесь:

Наиболее практичные вещи, которые можно использовать в этом случае: Stacks или Deques .Это позволяет добавлять объекты в стек, а затем извлекать их, что удаляет их.Стеки делают то же самое, что и Deques, но на самом деле Deques немного более гибкие и предпочитают стеки в кодировании.

0 голосов
/ 26 ноября 2011

Предполагается, что игрок, которого вы собираетесь перевести из команды A в команду B, является k -ым игроком в команде A (считая от 0, то есть для первого игрока k = 0 и т. Д.):

ArrayList<Player> teamA = ... // contains player p
ArrayList<Player> teamB = ... // does not contain player p
Player p = teamA.get(k);
teamB.add(p);
teamA.remove(p); // Note: you can also use index

Могут быть и другие способы получения доступа к игроку, которого вы собираетесь перемещать, в зависимости от контекста.Смотрите ArrayList для более доступных методов.

0 голосов
/ 26 ноября 2011

Если я вас правильно понимаю, у вас есть два списка:

ArrayList<Player> team1, team2;

И вы хотите переместить игрока из team1 в team2.


Похоже, вы хотите добавить копию, а не оригинал, в новую команду. Немного изменилось:

Есть два способа сделать это: короткий путь и ясный путь. В любом случае, вам понадобится индекс игрока. Вы, вероятно, хотите ясный путь:

Player oldPlayer = team1.remove(playerIndex);
Player newPlayer = oldPlayer.clone();
team2.add(newPlayer);

Для справки, более быстрый способ:

team2.add(team1.remove(playerIndex).clone());

Хотя для этого требуется реализация интерфейса Cloneable.

...