关于java:Collections-笔记

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> a
rray){
    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();
}

后果输入

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理