2015-03-24 4 views
1

Я хочу переместить определенное значение из списка массивов в другой, что является лучшим способом сделать это? Вот несколько примеров кода: значенияКак перенести значение из одного массива ArrayList в другое

из

ArrayList<CreateCard> deckArray = new ArrayList<CreateCard>(); 

в

ArrayList<CreateCard> playerHand = new ArrayList<CreateCard>(); 
+0

Удалите объект из первого списка и добавьте его ко второму ... – MadProgrammer

ответ

1

Я большой вентилятор вспомогательных функций:

public static void main(String[] args) { 
    ArrayList<CreateCard> deckArray = new ArrayList<CreateCard>(); 
    deckArray.add(new CreateCard()); 
    deckArray.add(new CreateCard()); 

    ArrayList<CreateCard> playerHand = new ArrayList<CreateCard>(); 

    // Deal a card 
    moveASpecificValue(deckArray, playerHand, 0); 

    // Deal from the bottom of the deck 
    moveASpecificValue(deckArray, playerHand, deckArray.size() - 1); 
} 

public static void moveASpecificValue(List<CreateCard> source, 
             List<CreateCard> destination, 
             int indexOfSpecificValue) { 
    destination.add(source.remove(indexOfSpecificValue)); 
} 
0

Если у вас есть индекс я где CreateCard хранится в DeckArray, вы можете просто сделать:

PlayerHand.add(DeckArray.remove(i)); 
+0

По существу, я пытаюсь переместить карту с верхней части колоды на руку игрока (так что она полностью удалит ее из колоды и затем переместите его в руку игрока). – user123

+0

Вы не можете использовать 'ArrayList.remove (Object o)', поскольку он возвращает 'true', если объект был найден и' false', если он не был найден. Однако вы можете удалить по индексу. Однако я рекомендую сделать это в трех строках. – Emz

+0

Мои извинения, я это заметил и отредактировал. Если вы просто пытаетесь удалить верхнюю карту, будет ли DeckArray.remove (0) работать? – glu10

0

Просто за цикл через ArrayList, который вы хотите получить, и когда вы попадете в нужный индекс или критерии, просто разместите значение внутри другого списка массивов.

+1

Какой смысл использовать коллекцию случайного доступа, если вы собираетесь это сделать? – CandiedOrange

+0

Бла-бла-бла ... –

1

Некоторые вещи в первую очередь.

  • CreateCard - класс, представляющий что? Если он просто представляет карту, я бы назвал класс Card, чтобы избежать путаницы.
  • Переменные в java (как методы) обычно называются с lowerCamelCase, что означает DeckArray - deckArray.
  • Я рекомендую назвать его deckOfCards вместо deckArray, так как deckArray может быть взаимопроникновен как массив колод.
  • Может ли ваш массив когда-либо содержать дубликаты колоды? Как вы играете с более одной колодой карт? Если не все его участники будут уникальными. Если это так, я рекомендую использовать вместо HashSet или ArrayList.

Последняя актуальная проблема.

PlayerHand.add(DeckArray.remove(0)); 

Это удалит верхнюю карту и добавит ее в PlayerHand.

0

Я хотел бы сделать такую ​​функцию:

public void moveCard(List<CreateCard> playerHand, List<CreateCard> deckArray) { 

    playerHand.add(deckArray.get[0]) 
    deckArray.remove(0) 

} 

Надеется, что это помогает.

Смежные вопросы