day20 集合(三)

1、Collections工具类

针对集合提供的工具类

常用方法:
sort() 排序
binarySearch() 二分查找
max() 最大值
min() 最小值
reverse() 反转
shuffle() 乱序

1.1 排序

对当前集合进行升序排序,实现Comparable接口的类

只能使用一种排序方案,这种方案叫作“自然比较”方案。

List<Integer> list = new ArrayList<Integer>();
		list.add(10);
		list.add(12);
		list.add(6);
		list.add(8);
		list.add(30);
		list.add(23);
		
		// 排序
		Collections.sort(list);
		System.out.println(list);
		
		// 第二个参数 比较器(两种方式:1 自定义类实现Comparator接口, 2匿名内部类)
		Collections.sort(list, new MyComparator());
		System.out.println(list);
		
		// 匿名内部类,
		// 针对接口、抽象类,不需要实现类
		// new 接口名/抽象类名(){ 重写的方法 }
		Collections.sort(list, new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				// TODO Auto-generated method stub
				return o2 - o1;
			}});
		System.out.println(list);

1.2二分查找

  • 使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序,也就是使用sort进行自然升序排列。

  • 如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。

  •  Collections.binarySearch(list, 要查找的数值)

List<Integer> list = new ArrayList<Integer>();
		list.add(10);
		list.add(12);
		list.add(6);
		list.add(8);
		list.add(23);
		
		// 6 8 10 12 23
		Collections.sort(list);
		System.out.println(list);
		// 二分查找 针对有序的集合
		int index = Collections.binarySearch(list, 12);
		System.out.println(index);

1.3 其他方法

Collections.max(list) //找最大值

Collections.min(list)//找最小值

Collections.reverse(list)//反转

	List<Integer> list = new ArrayList<Integer>();
		list.add(10);
		list.add(12);
		list.add(6);
		list.add(8);
		list.add(23);
		
		// 找最大值
		Integer max = Collections.max(list);
		System.out.println(max);
		
		// 乱序
		Collections.shuffle(list);
		System.out.println(list);

		// 反转
		Collections.reverse(list);
		System.out.println(list);

2、匿名内部类

针对接口、抽象类,不需要实现类

语法格式:new 接口名/抽象类名(){ 重写的方法 }

前提和条件:必须存在继承和实现关系的时候才可以使用
Collections.sort(list, new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				// TODO Auto-generated method stub
				return o2 - o1;
			}});
		System.out.println(list);

请雅清同学过目!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值