java學習筆記(6)——Collection 集合

Collection 集合

java.util.Collection接口
集合是一種容器,能夠存儲多種數據
數組長度固定,集合長度可變,
數組能夠存儲基本類型,也能夠存對象,集合只能存儲的對象,類型能夠不一致java

集合框架

學習頂層
使用底層數組

Collection接口

定義的是全部單列集合中共性的方法,全部單列集合均可以使用共性的方法
沒有帶索引的方法框架

IMG_1068(20200717-161715).PNG

List接口

1.有序的集合(存儲和取出元素順序相同)
2.容許存儲重複元素
3.有索引,能夠使用普通的for循環遍歷學習

vector集合
ArrayList集合
LinkedList集合

Set接口

1.不容許存儲重複元素
2.沒有索引,不能用普通的for循環遍歷spa

TreeSet集合

無序集合,存儲和取出的順序有可能不一致code

HashSet集合

無序集合,存儲和取出的順序有可能不一致對象

LinkedHashSet集合(是HashSet的子類)

有序集合blog

Collection經常使用方法

boolean add(E e)索引

void clear()接口

boolean remove(E e)

boolean contains(E e)
當前集合是否包含所給定的對象

boolean isEmpty()

int size()

Object[] toArray()

Collections類

鬥地主案例
無序版本

public class StandardCard {
    public static void main(String[] args) {
        //1.準備牌,定義一個ArrayList的集合,泛型用String
        ArrayList<String> poker = new ArrayList<>();
        //定義兩個數組,一個存花色,一個存序號
        String[] colors = {"♠", "♣", "♦", "♥"};
        String[] num = {"2", "A", "K", "Q", "J", "10",
                "9", "8", "7", "6", "5", "4", "3"};
        //存入大王小王
        poker.add("大王");
        poker.add("小王");

        //循環嵌套遍歷兩個數組,組裝52張牌
        for (String number: num) {
            for (String color : colors) {
                poker.add(color + number);
            }
        }
        System.out.println(poker);
        System.out.println("==========");
        //打亂
        Collections.shuffle(poker);
        System.out.println(poker);
        System.out.println("===========");
        //發牌,四個集合:三個玩家,一個底牌
        ArrayList<String> player1 = new ArrayList<>();
        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();
        ArrayList<String> leftCard = new ArrayList<>();

        /*
        遍歷poker集合,使用集合的索引%3給3個玩家輪流發牌
        剩餘3張牌給底牌
        先判斷底牌 (i >= 51)
         */
        for (int i = 0; i < poker.size(); i++) {
            String s = poker.get(i);
            if (i >= 51) {
                leftCard.add(s);
            }else if (i % 3 == 0) {
                player1.add(s);
            }else if (i % 3 == 1) {
                player2.add(s);
            }else if (i % 3 == 2) {
                player3.add(s);
            }
        }

        System.out.println(player1);
        System.out.println(player2);
        System.out.println(player3);
        System.out.println(leftCard);

    }
}

有序

public class Demo02DiZhu {
    public static void main(String[] args) {
        List<String> colors = List.of("♠", "♥", "♦", "♣");
        List<String> numbers = List.of("2", "A", "K", "Q", "J", "10",
                "9", "8", "7", "6", "5", "4", "3");
        //定義三個玩家、底牌
        ArrayList<Integer> player1 = new ArrayList<>();
        ArrayList<Integer> player2 = new ArrayList<>();
        ArrayList<Integer> player3 = new ArrayList<>();
        ArrayList<Integer> leftCard = new ArrayList<>();

        //定義Map和List的索引
        //Map裝牌(花色和數字)以及對應的索引號,List裝一樣的索引號,
        // 至關於遍歷List的值,代入Map的key,求value
        HashMap<Integer, String> mapCard = new HashMap<>();
        ArrayList<Integer> numCard = new ArrayList<>();
        
        int index = 0;
        mapCard.put(index, "大王");
        numCard.add(index);
        index++;
        mapCard.put(index, "小王");
        numCard.add(index);
        index++;
        for(String shuzi : numbers) {
            for(String huase : colors) {
                mapCard.put(index, huase + shuzi);
                numCard.add(index);
                index++;
            }
        }

        //將牌打亂
        Collections.shuffle(numCard);

        for (int m = 0; m < numCard.size(); m++) {
            Integer n = numCard.get(m);
            if (m >= 51) {
                leftCard.add(n);
            }else if (m % 3 == 0) {
                player1.add(n);
            }else if (m % 3 == 1) {
                player2.add(n);
            }else if (m % 3 == 2) {
                player3.add(n);
            }
        }

        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);

        lookPoker("player1", mapCard, player1);
        lookPoker("player2", mapCard, player2);
        lookPoker("player3", mapCard, player3);
        lookPoker("leftcard", mapCard, leftCard);

    }

    public static void lookPoker(String name, HashMap<Integer, String> poker, ArrayList<Integer> list) {
        System.out.println(name + ": ");
        for (Integer key : list) {
            String value = poker.get(key);
            System.out.println(value + " ");
        }

        System.out.println();
    }
}
相關文章
相關標籤/搜索