LinkedList 底层基于链表,查询速度慢,增删速度快。
package com.itcsat.object;
/*
* 使用LinkedList 存储一副扑克牌 然后实现洗牌功能
*
* 52张
* 一张扑克牌: 花色 点数 梅花6
*/
import java.util.LinkedList;
import java.util.Random;
class Poker{
String color;//花色
String num; //点数
public Poker(String color, String num) {
// TODO Auto-generated constructor stub
this.color = color;
this.num = num;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.color + this.num;
}
}
public class Demo34 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//生成扑克牌
LinkedList pokers = createPoker();
//洗牌
shufflePoker(pokers);
//显示
showPoker(pokers);
}
public static LinkedList createPoker(){
//该集合用于存储扑克对象
LinkedList pokers = new LinkedList();
//生成一副扑克牌
String[] colors = {"黑桃","红桃","梅花","方块"};
String[] nums = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for(int i=0; i<colors.length; i++){
for(int j=0; j<nums.length; j++){
pokers.add(new Poker(colors[i], nums[j]));
}
}
return pokers;
}
//洗牌功能
public static void shufflePoker(LinkedList pokers){
//创建随机数对象
Random random = new Random();
for(int i=0; i<100; i++){
//随机产生两个索引值
int index1 = random.nextInt(pokers.size());
int index2 = random.nextInt(pokers.size());
//根据索引值取出两张牌 然后交换两张牌的顺序
Poker poker1 = (Poker) pokers.get(index1);
Poker poker2 = (Poker) pokers.get(index2);
pokers.set(index1, poker2);
pokers.set(index2, poker1);
}
}
//显示扑克牌
public static void showPoker(LinkedList pokers){
for(int i=0; i<pokers.size(); i++){
System.out.print(pokers.get(i) + ";");
if((i+1)%13==0){
System.out.println();
}
}
}
}