java---Collections
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); } 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); } 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); } 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); } 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); } 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); } 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); } }
1.1 斗地主案例
具体规则:
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> 林志玲 = new ArrayList<String>(); ArrayList<String> 林心如 = new ArrayList<String>(); ArrayList<String> 舒淇 = 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) { 林志玲.add(box.get(i)); } else if(i % 3 == 1) { 林心如.add(box.get(i)); } else if(i % 3 == 2) { 舒淇.add(box.get(i)); } } System.out.println("林志玲:" + 林志玲); System.out.println("林心如:" + 林心如); System.out.println("舒淇:" + 舒淇); 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)); } } }
个人积累:
import java.util.ArrayList; import java.util.*; /* * Collections: * Collection和Collections有什么区别? * Collection是集合体系的最顶层,包含了集合体系的共性 * Collections是一个工具类,方法都是用于操作Collection * */ public class CollectionsDemo { public static void main(String[] args) { List <Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); int index=Collections.binarySearch(list,4); System.out.println(index);//3 /* * copy()函数,把原列表中的数据覆盖到目标列表 * 对于copy和fill问题。注意函数的长度问题。 */ //创建目标函数 List<Integer> dst=new ArrayList<Integer>(); dst.add(0); dst.add(0); dst.add(0); dst.add(0); dst.add(0); dst.add(0); Collections.copy(dst,list); //dst=[1, 2, 3, 4, 5, 6] //list=[1, 2, 3, 4, 5, 6] System.out.println("dst="+dst); System.out.println("list="+list); //创建目标列表 List<Integer> destList=new ArrayList<Integer>(); destList.add(1); destList.add(2); destList.add(3); destList.add(4); destList.add(5); Collections.fill(destList, 1111);//将列表中的内容全部替换成111 System.out.println("destlist="+destList); //destlist=[1111, 1111, 1111, 1111, 1111] Collections.reverse(list); System.out.println("list反转="+list);//list反转=[6, 5, 4, 3, 2, 1] Collections.sort(list);//排序 System.out.println("list排序="+list);//list排序=[1, 2, 3, 4, 5, 6] //默认从小到大的升序。 } }
一纸高中万里风,寒窗读破华堂空。
莫道长安花看尽,由来枝叶几相同?