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)红黑树