欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Collections(集合工具类)

程序员文章站 2022-03-09 19:14:50
...
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;
	}
}