Java集合框架——Collection工具类(四)

1、常用功能

在这里插入图片描述
代码1:

/**
 *  java. utils. Collections是集合工具类, 用来对集合进行操作。部分方法如下:
 *    1.public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。
 *    2.public static void shuffle(List<?> list)打乱顺序:打乱集合顺序。
 */
public class Collection09 {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();
		/**
		 *   往集合中添加多个元素
		 *   传统方法
		 *   list.add("a");
		 *   list.add("b");
		 *   list.add("c");
		 *   list.add("d");
		 */
		
		//1.public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加 一些 元素。
	    Collections.addAll(list, "a","b","c","d");
	    System.out.println(list);    //[a, b, c, d]
	
	    //2.public static void shuffle(List<?> list)打乱顺序:打乱集合顺序。
	    Collections.shuffle(list);
	    System.out.println(list);   //[d, b, c, a]  每次执行的结果都是随机的

	}
}

代码2:

public class Person03 implements Comparable<Person03>{
	private String name;
	private int age;
	
	//重写排序的规则
	@Override
	public int compareTo(Person03 o) {
		//return 0; 认为元素都是相同的
		//自定义比较的规则,比较两个人的年龄(this,参数Person03)
		return this.getAge() - o.getAge();   //年龄升序排列  反之则降序
	}
	//省略get/set...
	
/**
 *  java.utils.Collections是集合工具类,用来对集合进行操作。
 *  	public static <T> void sort(List<T> list)' :将集合中元素按照默认(升序)规则排序。
 *  
 *  注意: 
 *      sort(List<T> list)使用前提
 *      被排序的集合里面存储的元素,必须实现compareTo,重写接口中的方法compareTo定义排序的规则
 *      
 *   compareTo接口的排序规则:
 *     自己(this) - 参数  --->  升序   
 */
public class Collection10 {
	public static void main(String[] args) {
		ArrayList<Integer> list01 = new ArrayList<>();
		    list01.add(5);
		    list01.add(7);
		    list01.add(3);
		    list01.add(1);
		    System.out.println(list01); //[5, 7, 3, 1]
		    
		    Collections.sort(list01);
		    System.out.println(list01); //[1, 3, 5, 7]
		    System.out.println("-----------------");
		    
		    
		ArrayList<String> list02 = new ArrayList<>();
		    list02.add("a");
		    list02.add("d");
		    list02.add("b");
		    list02.add("c");
		    System.out.println(list02); //[a, d, b, c]
		    
		    Collections.sort(list02);
		    System.out.println(list02); //[a, b, c, d]
		    System.out.println("-----------------");
		    
		 ArrayList<Person03> list03 = new ArrayList<>();
			 list03.add(new Person03("亚索",18));
			 list03.add(new Person03("盖伦",20));
			 list03.add(new Person03("锐雯",18));
			 list03.add(new Person03("艾克",15));
		     System.out.println(list03); 
		     //[School [name=亚索, age=18], School [name=盖伦, age=20], School [name=锐雯, age=18], School [name=艾克, age=15]]
		    
		    Collections.sort(list03);
		    System.out.println(list03); 
		    //[School [name=艾克, age=15], School [name=亚索, age=18], School [name=锐雯, age=18], School [name=盖伦, age=20]]
		    System.out.println("-----------------");   
		    
	}

}

代码3:

public class Person04 {
	private String name;
	private int age;
	
	
	protected Person04() {
		super();
		// TODO Auto-generated constructor stub
	}

	protected Person04(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
/**
 *  java.utils.Collections是集合工具类,用来对集合进行操作。
 *  	public static <T> void sort(List<T> list, Comparator<? super T>):将集合中元素按照指定规则排序。
 *
 *	Comparator和Comparable的区别
 *		Comparable: 自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则CompareTo方法
 *		Comparator: 相当于找一个第三方的裁判,比较两个
 *
 */
public class Collection11 {
	public static void main(String[] args) {
		ArrayList<Integer> list01 = new ArrayList<>();
	    list01.add(5);
	    list01.add(7);
	    list01.add(3);
	    list01.add(1);
	    System.out.println(list01); //[5, 7, 3, 1]
	    
	    Collections.sort(list01,new Comparator<Integer>() {
	    	//重写比较的规则
	    	@Override
	    	public int compare(Integer o1,Integer o2) {
	    		return o1 - o2;   //升序  反之则降序
	    	}
		});
	    System.out.println(list01);   //[1, 3, 5, 7]
	    System.out.println("-------------------");
	    
	    ArrayList<Person04> list02 = new ArrayList<>();
	    list02.add(new Person04("路飞",20));
	    list02.add(new Person04("索隆",18));
	    list02.add(new Person04("b山治",19));
	    list02.add(new Person04("a乌索普",19));
	    System.out.println(list02);
	    //[School [name=路飞, age=20], School [name=索隆, age=18], School [name=b山治, age=19], School [name=a乌索普, age=19]]

	    Collections.sort(list02,new Comparator<Person04>() {
			@Override
			public int compare(Person04 o1, Person04 o2) {
				// 按照年龄升序排序
				int result = o1.getAge() - o2.getAge();
				//如果两个人年龄相同,再使用姓名的第一个字比较
				if (result == 0) {
					result = o1.getName().charAt(0) - o2.getName().charAt(0);
				}
				return result;
			}
		});
	    System.out.println(list02);
	    //[School [name=索隆, age=18], School [name=a乌索普, age=19], School [name=b山治, age=19], School [name=路飞, age=20]]
	}
}


版权声明:本文为weixin_45585288原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。