Я пытаюсь сделать игру в покер и хотел бы перенести данные между моей "колодой" ArrayList и иметь другой список "рука".Я жестко запрограммировал свой список, чтобы включить все 52 карты в стандартную колоду, и хочу вытолкнуть первую карту из колоды списка в руку списка, сославшись на местоположение карты в колоде.Из-за перетасовки колоды я не могу сослаться на название карты, чтобы перевести ее, и мне просто нужно местоположение карты для передачи в руку.Кто-нибудь знает функцию для этого, способ жестко запрограммировать это или даже где искать.Я могу уточнить что угодно, если это необходимо.
Если оба hand и deck имеют тип ArrayList<Card>, то это просто:
hand
deck
ArrayList<Card>
hand.add(deck.remove(0));
Обратите внимание, что ArrayList не очень хороший класс для этого, так как он не предназначен для эффективного удаления записей, отличных от конца списка.
ArrayList
Возможно, вам будет проще, если вы храните свою колоду карт в ArrayDeque. Сделав это, вы могли бы позвонить Collections.shuffle, чтобы перетасовать колоду, и, когда вы разыгрываете, просто pop следующую карту из колоды, то есть, Deque.
ArrayDeque
Collections.shuffle
pop
Deque
Вы можете использовать remove (int index) . Возвращает объект по индексу и удаляет его из списка.
Вы должны использовать Stack для колоды, поскольку именно так работает колода карт, и она действительно "выталкивает" первый объект из коллекции.(Вы также можете использовать универсальный интерфейс очереди для более современного, безопасного с точки зрения типов подхода, и ваша реализация все еще может быть коллекцией списков.)
Вот некоторая информация о перетасовкеStack .Затем перемешанный стек ведет себя точно так же, как колода карт.