Collections(集合工具类)

package com.qianfeng.test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

public class Demo6 {
	public static void main(String[] args) {
		/*
		 * Collections:集合工具类,封装了操作集合的方法
		 * 
		 * 要求:存储多个数据,要求数据可以重复,必须排序. 借助于Collection让ArrayList实现重复并排序
		 */
		ArrayList<String> list = new ArrayList<>();
		list.add("java");
		list.add("php");
		list.add("python");
		list.add("htmls");
		// 按照添加的顺序打印---自然顺序
		System.out.println(list);// [java, php, python, htmls]
		// 按照字典排序---升序排序
		Collections.sort(list);// sort方法--能排序并实现重复
		// 注意:这里要想实现字典排序,必须实现Comparable接口的comparaTo方法
		System.out.println("字典排序:" + list);// 字典排序:[htmls, java, php, python]

		// 按照从短到长的顺序排序--默认的方法无法实现,所以要创建自己的比较器,制定自己的比较规则
		comWithLength comWithLength = new comWithLength();
		Collections.sort(list, comWithLength);
		System.out.println("从短到长的顺序排序:" + list);// 从短到长的顺序排序[htmls, java, php, python]

		// 从长到短
		// 利用现有的比较器进行反转得到的比较器,从长到短
		Comparator<String> comparator = Collections.reverseOrder(comWithLength);
		Collections.sort(list, comparator);
		System.out.println("从长到短的顺序排序:" + list);// 从长到短的顺序排序[htmls, java, php, python]

		// 字典排序的反转排序比较器
		Comparator<String> comparator1 = Collections.reverseOrder();
		Collections.sort(list, comparator1);
		System.out.println("字典排序反转:" + list);// 字典排序反转:[python, php, java, htmls]

		// 现有顺序反转
		Collections.reverse(list);
		System.out.println("现有顺序反转:" + list);// 现有顺序反转:[htmls, java, php, python]

		// 求最大值--按照字典排序
		String max = Collections.max(list);
		System.out.println(max);// python
		// 比较器自己制定规则---如按照长度比较
		Collections.max(list, comWithLength);
		System.out.println("最大值:" + max);// 最大值:python

	}
}

// 创建比较器
class comWithLength implements Comparator<String> {

	public int compara(String o1, String o2) {
		int num = o1.length() - o2.length();
		return num == 0 ? o1.compareTo(o2) : num;

	}

	@Override
	public int compare(String arg0, String arg1) {
		// TODO Auto-generated method stub
		return 0;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值