Java функция для передачи данных между списками? - PullRequest
2 голосов
/ 29 января 2012

Я пытаюсь сделать игру в покер и хотел бы перенести данные между моей "колодой" ArrayList и иметь другой список "рука".Я жестко запрограммировал свой список, чтобы включить все 52 карты в стандартную колоду, и хочу вытолкнуть первую карту из колоды списка в руку списка, сославшись на местоположение карты в колоде.Из-за перетасовки колоды я не могу сослаться на название карты, чтобы перевести ее, и мне просто нужно местоположение карты для передачи в руку.Кто-нибудь знает функцию для этого, способ жестко запрограммировать это или даже где искать.Я могу уточнить что угодно, если это необходимо.

Ответы [ 4 ]

1 голос
/ 29 января 2012

Если оба hand и deck имеют тип ArrayList<Card>, то это просто:

hand.add(deck.remove(0));

Обратите внимание, что ArrayList не очень хороший класс для этого, так как он не предназначен для эффективного удаления записей, отличных от конца списка.

1 голос
/ 29 января 2012

Возможно, вам будет проще, если вы храните свою колоду карт в ArrayDeque. Сделав это, вы могли бы позвонить Collections.shuffle, чтобы перетасовать колоду, и, когда вы разыгрываете, просто pop следующую карту из колоды, то есть, Deque.

0 голосов
/ 29 января 2012

Вы можете использовать remove (int index) . Возвращает объект по индексу и удаляет его из списка.

0 голосов
/ 29 января 2012

Вы должны использовать Stack для колоды, поскольку именно так работает колода карт, и она действительно "выталкивает" первый объект из коллекции.(Вы также можете использовать универсальный интерфейс очереди для более современного, безопасного с точки зрения типов подхода, и ваша реализация все еще может быть коллекцией списков.)

Вот некоторая информация о перетасовкеStack .Затем перемешанный стек ведет себя точно так же, как колода карт.

...