练习21——Collections类的应用

package test4;

import org.junit.Test;
import test2.Person;

import java.util.*;

import static java.util.Collections.frequency;

/**
 * 〈一句话功能简述〉<br> 
 * 〈〉
 *
 * @author abu
 * @create 2019/7/24
 * @since 1.0.0
 */
public class TestCollections {
    @Test
    public void test3(){
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(9);
        list.add(9);
        list.add(4);
        list.add(3);
        List list1 = new ArrayList();
        list1.add(33);
        list1.add(5);
        list1.add(99);
        list1.add(3);
        //某元素出现的次数
        int i = frequency(list, 9);
        System.out.println(i);
        //将list中元素加入list2,list2长度要够长才能执行
        List list2 = Arrays.asList(new Object[list.size()]);
        Collections.copy(list2,list);
        System.out.println(list2 + "is list2");
        //使list是线程安全的
        List list3 = Collections.synchronizedList(list);
        System.out.println(list3);
        //元素替换
        Collections.replaceAll(list1,33,8);
        System.out.println(list1);
    }

    @Test
    public void test2(){
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(9);
        list.add(4);
        list.add(3);
        System.out.println(list);
        //根据元素自然顺序返回最大\小值
        System.out.println(Collections.max(list));
        System.out.println(Collections.min(list));

        List list1 = new ArrayList();
        list1.add(new Employee1("angle",18,new MyDate1(1989,01,03)));
        list1.add(new Employee1("aabcc",18,new MyDate1(1989,01,03)));
        list1.add(new Employee1("bank",34,new MyDate1(1999,02,05)));
        list1.add(new Employee1("tarry",12,new MyDate1(1979,02,21)));
        list1.add(new Employee1("echo",67,new MyDate1(1939,11,13)));

        Comparator com = new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof Employee1 && o2 instanceof Employee1){
                    Employee1 e1 = (Employee1)o1;
                    Employee1 e2 = (Employee1)o2;
                    MyDate1 birth1 = e1.getBirthday();
                    MyDate1 birth2 = e2.getBirthday();
                    if(birth1.getYear() != birth2.getYear()){
                        return birth1.getYear() - birth2.getYear();
                    }else if(birth1.getMonth() != birth2.getMonth()){
                        return birth1.getMonth() - birth2.getMonth();
                    }else if(birth1.getDay() != birth2.getDay()){
                        return birth1.getDay() - birth2.getDay();
                    }else{
                        return e1.getName().compareTo(e2.getName());
                    }
                }
                return 0;
            }
        };
        //根据Comparator定义的顺序排序,返回给定集合中元素的最大、小值
        Collections.sort(list1,com);
        System.out.println(list1);
        System.out.println(Collections.max(list1,com));
        System.out.println(Collections.min(list1,com));

    }

    @Test
    public void test1(){
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(9);
        list.add(4);
        list.add(3);
        System.out.println(list);
        //反转
        Collections.reverse(list);
        System.out.println(list);
        //随鸡排序
        Collections.shuffle(list);
        System.out.println(list);
        //指定list中i和j处的元素调换
        Collections.swap(list,3,4);
        System.out.println(list);
        //按元素自然顺序升序排序
        Collections.sort(list);
        System.out.println(list);

        //根据指定Comparator产生的顺序对list排序
        List list1 = new ArrayList();
        list1.add(new Person("angle",15));
        list1.add(new Person("cool",17));
        list1.add(new Person("david",56));
        list1.add(new Person("eden",90));
        list1.add(new Person("sun",2));

        Comparator com = new Comparator(){
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof Person && o2 instanceof Person){
                    Person p1 = (Person)o1;
                    Person p2 = (Person)o2;
                    int i = p1.getAge() - p2.getAge();
                    if(i == 0){
                        return p1.getName().compareTo(p2.getName());
                    }
                    return i;
                }
                return 0;
            }

        };
        Collections.sort(list1,com);
        System.out.println(list1);

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值