Java 如何将arraylist的前四个元素移动到另一个arraylist中?
谢谢你的帮助,我已经设法在提供的答案的帮助下使它工作 这是我的主要课程:Java 如何将arraylist的前四个元素移动到另一个arraylist中?,java,arraylist,Java,Arraylist,谢谢你的帮助,我已经设法在提供的答案的帮助下使它工作 这是我的主要课程: import data.Deck; import java.util.ArrayList; public class Game { public static void main(String[] args) { // TODO code application logic here ArrayList<Card> deck = new ArrayList<Car
import data.Deck;
import java.util.ArrayList;
public class Game {
public static void main(String[] args) {
// TODO code application logic here
ArrayList<Card> deck = new ArrayList<Card>();
Deck getdeck = new Deck();
deck = getdeck.get32Cards();
for (Card info : deck) {
System.out.println(info); //this just prints all the
}
}
}
这是我的甲板课:
package data;
import business.Hand;
import business.Card;
import business.Card.Rank;
import business.Card.Suit;
import java.util.ArrayList;
import java.util.Collections;
public class Deck {
ArrayList<Card> deck = new ArrayList<Card>();
public ArrayList<Card> get32Cards() {
deck.add(new Card(Suit.SPADES, Rank.JACK));
deck.add(new Card(Suit.SPADES, Rank.KING));
deck.add(new Card(Suit.SPADES, Rank.SEVEN));
deck.add(new Card(Suit.SPADES, Rank.EIGHT));
deck.add(new Card(Suit.SPADES, Rank.NINE));
deck.add(new Card(Suit.SPADES, Rank.TEN));
deck.add(new Card(Suit.SPADES, Rank.ACE));
deck.add(new Card(Suit.SPADES, Rank.QUEEN));
deck.add(new Card(Suit.HEARTS, Rank.JACK));
deck.add(new Card(Suit.HEARTS, Rank.KING));
deck.add(new Card(Suit.HEARTS, Rank.SEVEN));
deck.add(new Card(Suit.HEARTS, Rank.EIGHT));
deck.add(new Card(Suit.HEARTS, Rank.NINE));
deck.add(new Card(Suit.HEARTS, Rank.TEN));
deck.add(new Card(Suit.HEARTS, Rank.ACE));
deck.add(new Card(Suit.HEARTS, Rank.QUEEN));
deck.add(new Card(Suit.CLUBS, Rank.JACK));
deck.add(new Card(Suit.CLUBS, Rank.KING));
deck.add(new Card(Suit.CLUBS, Rank.SEVEN));
deck.add(new Card(Suit.CLUBS, Rank.EIGHT));
deck.add(new Card(Suit.CLUBS, Rank.NINE));
deck.add(new Card(Suit.CLUBS, Rank.TEN));
deck.add(new Card(Suit.CLUBS, Rank.ACE));
deck.add(new Card(Suit.CLUBS, Rank.QUEEN));
deck.add(new Card(Suit.DIAMONDS, Rank.JACK));
deck.add(new Card(Suit.DIAMONDS, Rank.KING));
deck.add(new Card(Suit.DIAMONDS, Rank.SEVEN));
deck.add(new Card(Suit.DIAMONDS, Rank.EIGHT));
deck.add(new Card(Suit.DIAMONDS, Rank.NINE));
deck.add(new Card(Suit.DIAMONDS, Rank.TEN));
deck.add(new Card(Suit.DIAMONDS, Rank.ACE));
deck.add(new Card(Suit.DIAMONDS, Rank.QUEEN));
Collections.shuffle(deck); //this shuffles the deck
return deck;
}
我还有一门手牌课和一门球员课。我打算让两名玩家每人有一个手牌实例。我不知道如何移除“deck”arraylist的前四张卡,然后将其插入另一个arraylist。我也不知道该写哪个类的代码。请告知。尝试创建另一个ArrayList newArraLIst,如下所示:
ArrayList<Card> newArraLIst = new ArrayList<Card>();
if(deck.size() >= 4){
for (int i = 0 ; i < 4 ; i++) {
newArraLIst.add(deck.remove(i));
}
}
for (Rank rank : Rank.values()){
for (Suit suit : Suit.values()){
deck.add(new Card(suit, rank);
}
}
public static final int HAND_SIZE = 4;
for (int i = 0; i < HAND_SIZE; i++){
for (Player player : game.getPlayers()){
player.getHand().add(deck.pop());
}
}
我建议你在你的牌组中使用ArrayList而不是ArrayList,这样更有意义。然后,您可以使用pop方法同时获取和移除顶卡。
但是,您可以使用以下n次来将甲板的第一个元素一直移动到手的起点。在您的情况下,将n替换为4
ArrayList<Integer> hand = new ArrayList<>();
for(int i = 0; i<n;i++){
hand.add(0, deck.get(0));
deck.remove(0);
}
我对你的代码有一些建议。首先,将这些卡片添加到牌堆中看起来有点难看,我建议您这样做:
ArrayList<Card> newArraLIst = new ArrayList<Card>();
if(deck.size() >= 4){
for (int i = 0 ; i < 4 ; i++) {
newArraLIst.add(deck.remove(i));
}
}
for (Rank rank : Rank.values()){
for (Suit suit : Suit.values()){
deck.add(new Card(suit, rank);
}
}
public static final int HAND_SIZE = 4;
for (int i = 0; i < HAND_SIZE; i++){
for (Player player : game.getPlayers()){
player.getHand().add(deck.pop());
}
}
另外,你的牌组应该是一堆牌,手牌可以是一排牌。当你从牌组中发牌时,应该如下所示:
ArrayList<Card> newArraLIst = new ArrayList<Card>();
if(deck.size() >= 4){
for (int i = 0 ; i < 4 ; i++) {
newArraLIst.add(deck.remove(i));
}
}
for (Rank rank : Rank.values()){
for (Suit suit : Suit.values()){
deck.add(new Card(suit, rank);
}
}
public static final int HAND_SIZE = 4;
for (int i = 0; i < HAND_SIZE; i++){
for (Player player : game.getPlayers()){
player.getHand().add(deck.pop());
}
}
这段代码从牌组中向游戏中的每个玩家发放4张牌。
deck.pop移除堆栈中的最后一张卡并将其返回。这样,您可以在玩家手中添加一张牌,然后用一行代码将其从牌堆中移除。您的庄家或游戏职业将持有该代码。只需在一个ArrayList上调用remove,并通过调用add…,将获得的项传递给另一个ArrayList。。。。e、 例如,handList.adddeckList.remove0;或者最好调用手和甲板的方法。我有点惊讶,你没有先尝试一下就问了这个问题。以下是文档文件:。看看,哪种方法最适合这个:-。下一次,请尝试一下,告诉我你被困在哪里了。所以这不是一个赋值转储。我尝试过一些东西,例如:public boolean giveFourCardsCard c{for int x=1;x<3;x++{if deck.containsc{deck.removec;Hand1.addc;return true;}else return false;}return false;}这确实有效,谢谢,但我还想从原始的deck arraylist中删除元素…有什么想法吗?我知道我必须使用.remove如果我用.remove方法替换.get方法,你可以使用remove方法,这样行吗?确定你可以这样使用.adddeck.removei;正如我之前所说,我有一手牌和一个球员级别。我想知道,我有两个玩家,每一个都有一手牌,每一手牌从牌组中取出四张牌。所以我们决定了如何从牌组中取出四张牌,但是我如何实现它,以便我的主类生成两个玩家实例,每个玩家生成一个手牌实例,那么我要做的就是将单词“ArrayList”改为“Stack”以使用该代码?也许现在更清楚了。该代码用于ArrayList。堆栈本来是一个更好的选择,这取决于您还要做什么。