操作集合的工具类:Collections (附带梭哈游戏实现)
来源:互联网 发布:华大基因 云计算 编辑:程序博客网 时间:2024/05/16 18:12
Collections 是java提供的一个操作Set,list和Map的工具类,该工具类里提供了大量方法对集合元素进行排序,查询,和修改等操作,还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。
排序操作:
void reverse(List list):反转指定List集合中元素的顺序;
void shuffle(List list):对List集合元素进行随机排序(类似与洗牌动作);
void sort(List list):根据元素的自然顺序对元素进行升序排序;
void sort(List list,Comparator c):根据制定的Comparator 产生的顺序对list集合元素进行排序;
void swap(List list,int i,int j): 将指定List集合中的i处元素与j处元素进行交换;
void rotate(List list,int distance):当distance为正数时,将list集合后distance个元素整体移到前面;当diatance为负数时,将list集合的前distance 个元素整体移到后面。该方法不会改变集合的长度。
梭哈游戏代码:
/**
* 梭哈游戏
* @author Administrator
*
*/
public class ShowHand {
//定义该游戏最多 支持多少玩家
private final int PLAY_NUM=5;
//定义扑克牌的所有花色和数值
private String[] types={"黑桃","红桃","梅花","方块"};
private String[] values={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
//cards 一局游戏中剩下的扑克牌
private List<String> cards=new LinkedList<String>();
//定义所有玩家
private String[] players =new String[PLAY_NUM];
//多有玩家手上的扑克牌
private List<String>[] playersCards=new List[PLAY_NUM];
/**
* 初始化扑克牌,放入52张,并用shuffle方法将其随机排序
*/
public void initCards(){
for(int i=0;i<types.length;i++){
for(int j=0;j<values.length;j++){
cards.add(types[i]+values[j]);
}
}
Collections.shuffle(cards);
}
/**
* 初始化玩家,为每个玩家分派用户名
*/
public void initPlayer(String... names){
if(names.length>PLAY_NUM){
System.out.println("玩家数量过多");
return;
}
for(int i=0;i<names.length;i++){
players[i]=names[i];
}
}
/**
* 初始化玩家手上的扑克牌,开始每个玩家手上的扑克牌为空
*/
public void initPlayerCards(){
for(int i=0;i<players.length;i++){
if(players[i]!=null && !players[i].equals("")){
playersCards[i]=new LinkedList<String>();
}
}
}
/**
* 派发扑克牌
* @param first 最先派给谁
*/
public void deliverCard(){
//依次给位于该指定玩家之前的每个玩家派扑克牌。
for(int i=0;i<PLAY_NUM;i++){
if(players[i]!=null){
playersCards[i].add(cards.get(0));
cards.remove(0);
}
}
}
/**
* 输出玩家手上的扑克牌
* 第一张未做不可见处理
*/
public void showPlayerCards(){
for(int i=0;i<PLAY_NUM;i++){
if(players[i]!=null){
System.out.print(players[i]+":");
for(String card:playersCards[i]){
System.out.print(card+"\t");
}
}
System.out.println("\n");
}
}
public static void main(String[] args)
{
ShowHand sh=new ShowHand();
sh.initPlayer("电脑玩家","玩家1");
System.out.println(sh.players);
sh.initCards();
System.out.println(sh.cards);
sh.initPlayerCards();
System.out.println(sh.playersCards);
//开始派牌
sh.deliverCard();
sh.showPlayerCards();
// 此处省略了下注 跟注 等处理
//第二轮派牌
sh.deliverCard();
sh.showPlayerCards();
}
}
查找替换操作:
int binarySearch(List list,Object key):使用二分搜索法搜索指定集合中该对象在集合中的索引,使用该方法必须保证List中的元素已经处于有序的状态。
Object max(Collection coll):根据元素的自然顺序,返回给定集合中的最大元素。
Object max(Collection coll,Comparator comp):根据comp指定的顺序,返回给定集合中的最大元素。
Object min(Collection coll):根据元素的自然顺序,返回给定集合中的最小元素。
Object min(Collection coll,Comparator comp):根据comp指定的顺序,返回给定集合中的最小元素。void fill(List list,Object obj):使用obj替换list中的所有元素。
int frequency(Collection c,Object o):返回指定元素在集合中的出现次数。
int indexOfSubList(List source,List target):返回子List对象在父List对象中第一次出现的位置索引;如果父List没有出现这样的子List,返回-1。
int lastOfSubList(List source,List target):返回子List对象在父List对象中最后一次出现的位置索引;如果父List没有出现这样的子List,返回-1。
boolean replaceAll(List list,Object oldVal,Object newVal):将指定List中的旧值全部用新值替换。
同步控制:
HashSet,TreeSet,ArrayList,ArrayDeque,LinkedList,HashMap,TreeMap都是线程不安全的,Collections类中提供了多个synchronizedXxx()方法,将指定集合包装成线程安全的集合。
设置不可变集合:
有三类方法,他们的参数为原来的集合对象,返回值为该集合的只读版本。
emptyXxx():返回一个空的,不可变的集合对象,此处的集合可以是List,SortedSet,Set,SortedMap,Map。
singletonXxx():返回一个只包含指定对象(只有一个或一项元素)的,不可变的集合对象,此处的集合可以是List,Map。
unmodifiableXxx():返回指定集合的不可变视图,此处的集合可以是List,SortedSet,Set,SortedMap,Map。
- 操作集合的工具类:Collections (附带梭哈游戏实现)
- Collections 操作集合的工具类
- 操作集合的工具类 collections
- 操作集合的工具类:Collections
- 操作集合的工具类:Collections
- Java 操作集合的工具类:Collections
- 操作集合的工具类:Collections
- 操作集合的工具类:collections
- 操作集合的工具类:Collections
- 操作集合的工具类:Collections
- Collections集合操作的工具类
- 操作集合的工具类Collections
- 操作集合的工具类Collections
- 操作集合的工具类Collections
- Collections(集合操作的工具类)&集合的同步控制&不可变集合的设置
- Collections(集合操作的工具类)&集合的同步控制&不可变集合的设置
- Collections(集合操作的工具类)&集合的同步控制&不可变集合的设置
- Collections(集合操作的工具类)&集合的同步控制&不可变集合的设置
- java三大框架介绍
- nginx
- angularjs笔记之简介
- JavaWeb学习总结——文件上传和下载
- gradle指定版本下载缓慢问题的解决
- 操作集合的工具类:Collections (附带梭哈游戏实现)
- 深度学习入门 ---softmax回归
- Azure Stack深入浅出5:在Azure Stack上使用Web App PaaS服务及其背后原理窥探
- 蓝创十周年庆,感恩有您陪伴
- WebSocket的原理与优缺点
- 算法复习:二叉搜索树的后序遍历序列
- ZOJ 1940 Dungeon Master bfs
- APP二维码微信扫描后无法下载的问题
- 排序算法