学习目标:
List
List是一个接口,需要用类来实现这个接口。
学习内容:
1用Array List实现List的基本功能
public static void main(String[] args) {
//创建List实例
List<String> list = new ArrayList<>();
//新增元素
list.add("C");
list.add("C++");
list.add("Java");
list.add("Python");
//打印整个list
System.out.println(list);
//按照下标来访问元素
System.out.println(list.get(0));
//根据下表来修改元素
list.set(0,"PHP");
System.out.println(list);
//使用for()/for(:)来访问每个元素
for (String s:list) {
System.out.println(s);
}
for (int i = 0;i<=list.size()-1;i++){
System.out.println(list.get(i));
}
//使用subList获取子序列
System.out.println(list.subList(1,3));
//使用构造方法构造出新的list对象
List<String > list1 = new ArrayList<>(list);
System.out.println(list1);
list.set(0,"C#");
//验证是不是深拷贝,需要给List泛型参数填一个可变对象的类型才可以。
}
2用ArrayList实现一副扑克
class Card {
private String rank;//点数
private String suit;//花色
public Card(String rank, String suit) {
this.rank = rank;
this.suit = suit;
}
public String getRank() {
return rank;
}
public void setRank(String rank) {
this.rank = rank;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
@Override
public String toString() {
/*return "Card{" +
"rank='" + rank + '\'' +
", suit='" + suit + '\'' +
'}';*/
return "[" + this.rank + this.suit + "]";
}
}
public class Poker {
public static void main(String[] args) {
//创建一副牌
List<Card> poker = buyPoker();
//洗牌
//Collections.shuffle()
// 把List中的元素随机打乱顺序
//或者自己实现
Collections.shuffle((poker));
//发牌 三个人,每人五张牌
//每个玩家就是一个List,就可以把每个人的手牌放到这个List中,
//可以把这多个玩家的信息再放到一个List中。
//players 表示一个玩家的所有手牌
//每个元素就是一个玩家的所有手牌(也是一个List)
List<List<Card>> players = new ArrayList<>();
players.add(new ArrayList<>());
players.add(new ArrayList<>());
players.add(new ArrayList<>());
//给三个玩家发牌,每人发五张牌
//i表示牌的编号,j表示玩家的编号
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
List<Card> player = players.get(j);
player.add(poker.remove(0));
}
}
//查看玩家手牌
for (int i = 0; i < 3; i++) {
System.out.println("玩家"+i+players.get(i));
}
}
private static List<Card> buyPoker() {
List<Card> poker = new ArrayList<>();
String[] suits = {"♥", "♠", "♣", "♦"};
for (int i = 0; i < 4; i++) {
//这个循环来处理四种花色
//每种花色又有13张牌
for (int j = 2; j <= 10; j++) {
//poker.add(new Card(String.valueOf(j),suits[i]));
poker.add(new Card("" + j, suits[i]));
}
poker.add(new Card("J", suits[i]));
poker.add(new Card("Q", suits[i]));
poker.add(new Card("K", suits[i]));
poker.add(new Card("A", suits[i]));
}
return poker;
}
private static List<Card> myShuffle(List<Card> poker){
List<Card> poker1 = poker;
return null;
}
}