Collections

Collections概述和应用

是针对汇合操作的工具类

//创立汇合对象List<Integer> list = new ArrayList<Integer>();//增加元素list.add(30);list.add(20);list.add(50);list.add(10);list.add(40);//将指定的列表按升序(天然程序)排序Collection.sort(list);//反转列表中元素的程序Collection.reverse(list);//随机排列列表中的元素Collection.shuffle(list);sout(list);

升序

反转

随机排序

案例 ArrayList汇合存储学生对象并排序


学生

创立汇合对象 把学生增加到汇合

//应用Collections对ArrayList汇合排序  利用比拟器Comparator进行Collection.sort(array,new Comparator<Student>(){    @Override    public int compare(Student s1,Student s2){        //依照年龄从小到大排序        int num = s1.getAge()-s2.getAge();        //年龄雷同时依照字母程序排序        int num2 = num==0?s1.getName().CompareTo(s2.getName()):num;        return num2;    }});//遍历汇合for(Student s : array){    sout(s.getName()+","+s.getAge());}

输入

案例 模仿斗地主

//创立一个牌盒,也就是定义一个汇合对象,用Arraylist汇合实现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){        array.add(color+number);    }}array.add("大王");array.add("小王");//洗牌也就是把牌打散,用Collections的shuffle()办法实现Collections.shuffle(array);/发牌,也就是遍历汇合给三个玩家发牌//创立三个汇合Arraylist<String> laqArray = new Arraylist<String>();Arraylist<String> lyArray = new Arraylist<String>();Arraylist<String> fqyArray = new Arraylist<String>();Arraylist<String> dpArray = new Arraylist<String>();//留三张底牌//发牌for(int i = 0,i<array.size(),i++){    String poker = array.get(i);    if(i>=array.size()-3){        dpArray.add(poker);    }else if(i%3==0){        laqArray.add(poker);    }else if(i%3==1){        lyArray.add(poker);    }else if(i%3==2){        fqyArray.add(poker);    }}//看牌 三个玩家别离遍历本人的牌lookPoker(name:"林青霞",laqArray);lookPoker(name:"柳岩",lyArray);lookPoker(name:"风清扬",fqyArray);lookPoker(name:"底牌",dpArray);//写一个办法实现 看牌的办法public static void lookPoker(String name,Arraylist<String> array){    System.out.print(name + "的牌是");    for(String poker : array){        System.out.print(poker+" ")    }    sout();}

后果输入

案例 模仿斗地主升级版

对拿到的牌进行排序

//创立HashMap汇合,键是编号,值是牌HashMap<Integer,String> hm = new HashMap<Integer,String>();//创立ArrayList汇合,存储编号Arraylist<Integer> array = new Arraylist<Integer>();//定义花色数组String[] colors = {"方片","梅花","红桃","黑桃"};//定义一个点数数组String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//从0开始王HashMap汇合外面存储编号,并存储对应的牌,同时往ArrayList外面存储编号int index = 0;for(String number :numbers){    for(String color : colors){        hm.put(index,color+number);        array.add(index);        index++;    }}hm.put(index,"小王");array.add(index);index++;hm.put(index,"大王");array.add(index);//洗牌,洗得编号Collections.shuffle(array);//发牌 发的是编号,为了保障编号是排序的,创立TreeSet汇合接管TreeSet<Integer> lqxSet = new TreeSet<Integer>();TreeSet<Integer> lySet = new TreeSet<Integer>();TreeSet<Integer> fqySety = new TreeSet<Integer>();TreeSet<Integer> dpSet = new TreeSet<Integer>();//留三张底牌//通过for循环实现发牌for(int i = 0,i<array.size(),i++){    int x = array.get(i);    if(i>=array.size()-3){        dpSet.add(x);    }else if(i%3==0){        lqxSet.add(x);    }else if(i%3==1){        lySet.add(x);    }else if(i%3==2){        fqySet.add(x);    }}//调用看牌办法看牌lookPoker(name:"林青霞",lqxArray,hm);lookPoker(name:"柳岩",lyArray,hm);lookPoker(name:"风清扬",fqyArray,hm);lookPoker(name:"底牌",dpArray,hm);//定义方法来看牌 遍历TreeSet汇合,获取编号,到HashMap汇合找对应的牌public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){    System.out.print(name + "的牌是");    for(Integer key : ts){        String poker = hm.get(key);        System.out.print(poker+" ")    }    sout();}

后果输入