2014-03-13 71 views
1

我有一副撲克牌1-52的陣列列表,他們正在洗牌,我想基本上將對手的牌分成兩半(0,25)和(26,51),以對付兩名玩家。但我只看到反應,說使用列表<>雖然我想保持每個玩家套牌arraylist不干擾其他已經創建的方法。有沒有辦法讓雙方的隊員都成爲陣列隊員?如何從ArrayList.subList獲取ArrayList?

import java.util.ArrayList; 
import java.util.Collections; 
public class Methods { 
    public static ArrayList<Integer> deck = new ArrayList<Integer>(); 
    public static ArrayList<Integer> deckPlayerOne = new ArrayList<Integer>(); 
    public static ArrayList<Integer> deckPLayerTwo = new ArrayList<Integer>(); 
    public static ArrayList<Integer> generateDeck(){ 
     for(int i=1; i<53; i++){ 
      deck.add(i); 
     } 
     return deck; 
    } 

    public static ArrayList<Integer> shuffle(){ 
     Collections.shuffle(deck); 
     return deck; 
    } 

    public static void splitDeck(){ 
     // deckPlayerOne = deck.subList(0, 25); <---- location of error 
    } 

    public static ArrayList<Integer> playerOneDeck(){ 

     } 

    } 

    public static ArrayList<Integer> platerTwoDeck(){ 

    } 
} 
+1

首先,*你得到了什麼*錯誤?其次,就「List」合同而言,您真正需要的只是您的靜態方法中的每一個,而不是「ArrayList 」,而不是「列表」。 (不過,它們必須按照現在的方式進行更新)。最終,如果滿足'List'的合同,那麼爲什麼您要關心具體實現是什麼?我之所以這麼說,是因爲你有可能會成爲你會在乎的原因,但這對我來說並不明顯。 – Makoto

+0

將變量或字段聲明爲'ArrayList'而不是'List'或'Collection'是不好的做法。 – BevynQ

+0

理論上,如果我確實想直接從ArrayList到ArrayList我猜我必須複製並刪除?從25 ++或x ++? – Adamc23

回答

4

也許我不明白你的問題,但如果你想一個ArrayList被劃分成兩個其他您可以使用此:

ArrayList myArrayList = new ArrayList(); 
    ArrayList part1 = new ArrayList(myArrayList.subList(0, 25)); 
    ArrayList part2 = new ArrayList(myArrayList.subList(26, 51)); 

這是你想要的嗎?

+0

我要麼被施放甲板或更換deckPlayerOne列表<> – Adamc23

+0

好吧,似乎是最理想的答案,謝謝。 – Adamc23