泛型通配符、 斗地主案例
泛型通配符
泛型通配符 :
?:代表任意的数据类型
使用方式:
不能创建对象使用,只能作为方法的参数
案例:
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
ArrayList<String> list1 = new ArrayList<>();
list1.add("一");
list1.add("二");
Aring(list);
Aring(list1);
}
/*
* 定义一个方法,能遍历说所有Arraylsit集合
* 这时候我们不知道Arraylist集合使用什么数据类型,可以泛型的通配符?来接收数据类型
* */
public static void Aring(ArrayList<?> list){
for (Object o : list) {
System.out.println(o);
}
}
}
这样我们定义一个方法泛型为?然后遍历
我们来看结果:
斗地主案例
准备牌54张,存储到一个集合当中
特殊牌:大王,小王
其他52张牌
定义:一个数组/集合,存储4种花生♠,♥,♣,♦
定义:一个集合/集合,存储13个序号2,A,K..
循环嵌套遍历俩个数据、集合,组装52张牌
♠,♥,♣,♦2,A,K.....
2洗牌
使用集合工具Collections的方法shuffle中指定随机数要对指定的列表进行置换,会随机的打乱集合中的元素
3发牌
1人17张牌,剩余3张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3
定义4个集合,存储3个玩家的牌和底牌
索引%2有俩个值(0,1)0%2 =0 2%2=0 3%2=1
索引%3有三个值(012)0%3=0 1%3=1 2%3=2 3%3=0
索引>=51 改底牌发牌
4看牌
来画个图看一下: