Collections

Collections

1.Collections概述和使用

概述

  • 是针对集合操作的工具类
  • 内部的方法都是静态方法

常用方法

  • public static <T extends Comparable<?super T>> void sort(List list);将指定的列表按升序排序
  • public static void reverse(List<?>list);反转指定列表中元素的顺序
  • public static void shuffle(List<?>list);使用默认的随机源随机排列指定的列表
public static void main(String[] args) {
	List<Integer>list=new ArrayList<Integer>();
	list.add(10);
	list.add(5);
	list.add(30);
	list.add(20);
	Collections.sort(list);
	System.out.println(list);
	Collections.reverse(list);
	System.out.println(list);
	Collections.shuffle(list);
	System.out.println(list);
}

2.案例

1.ArrayList集合存储学生对象并排序

ArrayList存储学生对象,使用Collections对ArrayList进行排序。要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序。

public static void main(String[] args) {
	List<Student> list=new ArrayList<Student>();
	Student student1 = new Student("zhangsan",38);
	Student student2 = new Student("lisi",25);
	Student student3 = new Student("wangwu",38);
	list.add(student1);
	list.add(student2);
	list.add(student3);
//	Collections.sort(list);

	Collections.sort(list, new Comparator<Student>(){

		@Override
		public int compare(Student o1, Student o2) {
			int num=o1.getAge()-o2.getAge();
			if(num!=0)
				return num;
			else {
				return o1.getName().compareTo(o2.getName());
			}
		}
		
	});
	for(Student s:list)
	System.out.println(s.getName()+","+s.getAge());
}
2.模拟斗地主

通过程序实现斗地主过程中的洗牌、发牌和看牌

public static void main(String[] args) {
	ArrayList<String> array=new ArrayList<String>();
	
	String[] colors= {"♥","♠","♣","◆"};
	String[] numbers= {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
	for(String color:colors)
	{
		for(String number:numbers)
		{
			String s=color+number;
			array.add(s);
		}
	}
	array.add("大王");
	array.add("小王");
	Collections.shuffle(array);
	
	ArrayList<String> wanjia1=new ArrayList<String>();
	ArrayList<String> wanjia2=new ArrayList<String>();
	ArrayList<String> wanjia3=new ArrayList<String>();
	ArrayList<String> dipai=new ArrayList<String>();
	for(int i=0;i<array.size();i++) {
		String p=array.get(i);
		
		if(i<=16)
			wanjia1.add(p);
		else if(16<i&&i<=33)
			wanjia2.add(p);
		else if(33<i&&i<=50)
			wanjia3.add(p);
		else
			dipai.add(p);
		
	}
	System.out.print("玩家1的牌: ");
	for(String s:wanjia1)
		System.out.print(s+" ");
	System.out.println();
	System.out.print("玩家2的牌: ");
	for(String s:wanjia2)
		System.out.print(s+" ");
	System.out.println();
	System.out.print("玩家3的牌: ");
	for(String s:wanjia3)
		System.out.print(s+" ");
	System.out.println();
	System.out.print("底牌: ");
	for(String s:dipai)
		System.out.print(s+" ");
}
3.斗地主升级版

通过程序实现斗地主过程中的洗牌、发牌和看牌,要求:对牌进行排序。

public static void main(String[] args) {
	//创建HashMap,键是编号,值是牌 
	HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
	//创建ArrayList,存储编号
	ArrayList<Integer> arrayList = new ArrayList<Integer>();
	//创建花色数组和点数数组
	String[] colors={"♥","♠","♣","◆"};
	String[] numbers= {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
	//从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号,1-54
	int index=0;
	for(String number:numbers)
	{
		for(String color:colors) {
			String pai=color+number;
			hashMap.put(index, pai);
			arrayList.add(index);
			index++;
		}
	}
        hashMap.put(index, "小王");
        arrayList.add(index);
        index++;
        hashMap.put(index, "大王");
        arrayList.add(index);
	//洗牌(洗的是编号)
	Collections.shuffle(arrayList);
	//发牌(发的也是编号,为保证编号是排序的可用TreeSet接收)
	TreeSet<Integer> treeSet1 = new TreeSet<Integer>();
	TreeSet<Integer> treeSet2 = new TreeSet<Integer>();
	TreeSet<Integer> treeSet3 = new TreeSet<Integer>();
	TreeSet<Integer> dipai= new TreeSet<Integer>();
	for(Integer i=0;i<arrayList.size();i++) {
		Integer paihao=arrayList.get(i);
		if(i>=arrayList.size()-3)
			dipai.add(paihao);
		else if(i%3==1) {
			treeSet1.add(paihao);
		}
		else if(i%3==2) {
			treeSet2.add(paihao);
			
		}
		else
				treeSet3.add(paihao);
	}
	//定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合里面找对应的牌)//调用看牌方法
	System.out.print("玩家1的牌:");
	 for(Integer i:treeSet1) {
		 String s=hashMap.get(i);
		 System.out.print(s+" ");
	 }
System.out.println();

System.out.print("玩家2的牌:");
for(Integer i:treeSet2) {
	 String s=hashMap.get(i);
	 System.out.print(s+" ");
}
System.out.println();

System.out.print("玩家3的牌:");
for(Integer i:treeSet3) {
	 String s=hashMap.get(i);
	 System.out.print(s+" ");
}
System.out.println();

System.out.print("底牌:");
for(Integer i:dipai) {
	 String s=hashMap.get(i);
	 System.out.print(s+" ");
}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

容与0801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值