2021-03-14:java第17天:泛型复习,斗地主案例发牌练习,数据结构:栈,队列,数组,链表,红黑树

1.复习泛型

泛型通配符  : public static void print(ArrayList<?> list){

package Part2.Day_17;

import java.util.ArrayList;
import java.util.Iterator;

public class Test02 {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("hello");
        list1.add("world");

        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);
        print(list1);
    }
    public static void print(ArrayList<?> list){
        for(int i=0; i<list.size();i++){
            System.out.println(i);
        }
        Iterator<?> it = list.iterator();
        while (it.hasNext()){
            Object o = it.next();
            System.out.println(o);
        }
    }
}
/*
    泛型的上限限定: ? extends E 代表使用的泛型只能是E类型的子类/本身
    泛型的上限限定: ? super E   代表使用的泛型只能是E类型的父类/本身
 */

类与类之间的继承关系:

Integer extends Number extends Object

String extends Object

2.斗地主案例

 

无序版本:

package Part2.Day_17.doudizhu;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

/*
    1.准备牌 2.洗牌 3.发牌 4.看牌
 */
public class Doudizhu {
    public static void main(String[] args) {
        //准备牌
        //定义54张牌ArrayList 泛型使用String
        ArrayList<String> poker = new ArrayList<>();
        String[] colors ={"♠","♥","♣","♦"};
        String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        poker.add("大王");
        poker.add("小王");
        for (String number :numbers) {
            for (String color : colors) {  //colors.for 快捷键的增强for循环
                poker.add(color+number);
            }
        }
        //洗牌 Collection.shuffle
        Collections.shuffle(poker);
        //发牌
        ArrayList<String> player01 = new ArrayList<>();
        ArrayList<String> player02 = new ArrayList<>();
        ArrayList<String> player03 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        //遍历扑克,获取每一张牌
        //poker集合的索引%3,轮流发牌,剩余3张给底牌
        //先判断 i>=51 底牌
        for (int i = 0; i < poker.size(); i++) {
            String p = poker.get(i);
            if (i>=51){
                dipai.add(p);
            }else if (i%3==0){
                player01.add(p);
            }else if (i%3==1){
                player02.add(p);
            }else if (i%3==2){
                player03.add(p);
            }
        }
        //看牌
        System.out.println("刘德华"+player01);
        System.out.println("周润发"+player02);
        System.out.println("周星驰"+player03);
        System.out.println("底牌"+dipai);
    }
}

 

有序版本:

package Part2.Day_17.doudizhu;

import java.util.*;

/*
1.准备牌 2.洗牌 3.发牌 4排序 5.看牌
 */
public class luandoudizhu {
    public static void main(String[] args) {
        HashMap<Integer,String> poker = new HashMap<>();
        ArrayList<Integer> pokerIndex =new ArrayList<>();

        List<String> colors =List.of("♠","♥","♣","♦");
        List<String> numbers = List.of("2","A","K","Q","J","10","9","8","7","6","5","4","3");

        int index = 0;
        poker.put(index,"大王");
        pokerIndex.add(index);
        index++;
        poker.put(index,"小王");
        index++;
        pokerIndex.add(index);

        for (String number : numbers) {
            for (String color : colors) {
                poker.put(index,color+number);
                pokerIndex.add(index);
                index++;
            }
        }
        //System.out.println(poker);
        //System.out.println(pokerIndex);

        //洗牌
        Collections.shuffle(pokerIndex);
        ArrayList<Integer> player01 = new ArrayList<>();
        ArrayList<Integer> player02 = new ArrayList<>();
        ArrayList<Integer> player03 = new ArrayList<>();
        ArrayList<Integer> dipai = new ArrayList<>();

        for (int i = 0; i < pokerIndex.size(); i++) {
            Integer in = pokerIndex.get(i);
            if (i>=51){
                dipai.get(in);
            }else if (i%3==0){
                player01.add(in);
            }else if (i%3==1){
                player02.add(in);
            }else if (i%3==2){
                player03.add(in);
            }
        }
        Collections.sort(player01);
        Collections.sort(player02);
        Collections.sort(player03);
        Collections.sort(dipai);

        //看牌
        lookPoker("刘德华",poker,player01);
    }
    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();
    }
}

3.数据结构

栈,队列,数组,链表,红黑树

(1)栈

(2)队列

(3)数组:

查询快,增删慢

(4)链表

(5)红黑树

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值