Java_18 Map与Set集合---②collections工具类、模拟斗地主

Collections中的方法

static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换
static void sort(List list) :按照列表中元素的自然顺序进行排序
static void shuffle(List list):随机置换
static void reverse(List list) :反转
static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列表
static int binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置

API下Collections

java.util
此类完全由在collection上进行操作或返回,collection的静态方法组成。它包含在collection上操作的多态算法,即“包装器”,包装器返回由指定collection支持的新collection,以及少数其他内容。
如果为此类的方法所提供的collection或类对象为null,则这些方法都将抛出NullPointerException

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
 * Collections:
 * 面试题:Collection和Collections有什么区别?
 * 		Collection是集合体系的最顶层,包含了集合体系的共性
 * 		Collections是一个工具类,方法都是用于操作Collection
 * 
 */
public class CollectionsDemo {
	public static void main(String[] args) {
		//static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(4);
		Collections.swap(list, 0, 1);
		
		System.out.println(list);
		/*
			输出结果:
				[4,1]
		*/
	
	}

	private static void method6() {
		//static void  sort(List<T> list) :按照列表中元素的自然顺序进行排序
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(4);
		list.add(3);
		list.add(2);
		
		Collections.sort(list);
		System.out.println(list);
		/*
			输出结果:
				[1,2,3,4]
		*/
	}

	private static void method5() {
		//static void shuffle(List list):随机置换  
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		Collections.shuffle(list);
		System.out.println(list);
		/*	结果不唯一
			输出结果:
				[2,1,3,4]
		*/
	}

	private static void method4() {
		//static void reverse(List list)  :反转
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		
		Collections.reverse(list);
		System.out.println(list);
		/*
			输出结果:
				[4,3,2,1]
		*/
	}

	private static void method3() {
		//static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("world");
		list.add("java");
		System.out.println(list);
		
		Collections.fill(list, "android");
		
		System.out.println(list);
		/*
			输出结果:
				[android,android,android]
		*/
	}

	private static void method2() {
		//static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列表
		//注意:目标列表的长度至少等于源列表的长度
		//创建源列表
		List<String> src = new ArrayList<String>();
		src.add("hello");
		src.add("world");
		src.add("java");
		
		//创建目标列表
		List<String> dest = new ArrayList<String>();
		dest.add("java");
		dest.add("java");
		dest.add("java");
		dest.add("java");
		Collections.copy(dest, src);
		System.out.println(dest);
		/*
			输出结果:
				[hello,world,java,java]
		*/
	}

	private static void method() {
		//static int  binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置 
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		
		int index = Collections.binarySearch(list, 4);
		System.out.println(index);
		/*
			输出结果:
				3
		*/
	}
}

模拟斗地主发牌

具体规则:

1. 组装54张扑克牌
2. 将54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌、底牌
import java.util.ArrayList;
import java.util.Collections;

/*
 *	模拟斗地主发牌 
 	
 	买牌
 	洗牌
 	发牌
 
 */
public class CollectionsTest {
	public static void main(String[] args) {
		//买牌
		String[] arr = {"黑桃","红桃","方片","梅花"};
		String[] arr2 = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
		
		ArrayList<String> box = new ArrayList<String>();
		//添加每张牌
		for (int i = 0; i < arr.length; i++) {
			//获取每一个花色
			for (int j = 0; j < arr2.length; j++) {
				//获取每一个数
				box.add(arr[i] + arr2[j]);
			}
			
		}
		box.add("大王");
		box.add("小王");
		//System.out.println(box.size());
		
	 	//洗牌
		Collections.shuffle(box);
		//System.out.println(box);
		
	 	//发牌
		ArrayList<String> p1 = new ArrayList<String>();
		ArrayList<String> p2 = new ArrayList<String>();
		ArrayList<String> p3 = new ArrayList<String>();
		
		//留三张底牌给地主
		for (int i = 0; i < box.size() - 3; i++) {
			/*
			 *  i = 0;i % 3 = 0;
			 *  i = 1;i % 3 = 1;
			 *  i = 2;i % 3 = 2;
			 *  i = 3;i % 3 = 0;
			 *  i = 4;i % 4 = 1;
			 *  i = 5;i % 5 = 2;
			 */
			
			if(i % 3 == 0) {
				p1.add(box.get(i));
			}
			else if(i % 3 == 1) {
				p2.add(box.get(i));
			}
			else if(i % 3 == 2) {
				p3.add(box.get(i));
			}
		}
		
		System.out.println("p1:" + p1);
		System.out.println("p2:" + p2);
		System.out.println("p3:" + p3);
	 
	
		System.out.println("底牌:");
	/*	System.out.println(box.get(box.size() - 1));
		System.out.println(box.get(box.size() - 2));
		System.out.println(box.get(box.size() - 3));*/
		
		for (int i = box.size() - 3; i < box.size(); i++) {
			System.out.println(box.get(i));
		}
	}
	
}

猜你喜欢

转载自blog.csdn.net/weixin_43801116/article/details/107565650
今日推荐