java -- 集合 -8 (Collections)

点击查看:java集合(List、Set、Map)博客目录
8.1 、Collections 常用功能

数组有Arrays,集合有Collections…

  • java.utils.Collections 是集合工具类,用来对集合进行操作。部分方法如下:
  • public static boolean addAll(Collection c , T … element):往集合中添加一些元素。
  • public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。
  • public static void sort(List list): 将集合中元素按照默认规则排序。
  • public static void sort(List list,Comparator<? super T> ):将集合中的元素按照指定规则排序。

代码演示:

import java.util.*;
public class CollectionsDemo{
    public static void main(String[] args){
        ArrayList<String> list = new ArrayList<String>();
        /* list.add("a");
	list.add("b");
	list.add("c");
	list.add("d"); */

	// 一次添加多个元素
        Collections.addAll(list,"b","a","c","d");
        System;out.println(list);

	// 打乱集合中元素的顺序
        Collections.shuffle(list);
        System.out.println(list);

	// 将集合中元素 默认按升序排序
	Collections.sort(list);
	System.out.println(list);
    }
}
  • public static void sort(List list): 将集合中元素按照默认规则排序。
import java.util.*;
/* Sort(List<T> list) 使用前提
*  被排序的集合里面存储的元素,必须实现Comparable,
*  重写接口中的方法ComparaTo
*
*  Comparable 接口排序规则:
*      自己(this)-参数 ; 升序,反之降序。
*/
class Person implement Comparable{
    private String name;
    private int age;
    
    public Person(){
    }
    public Person(String name , int age){
        this.name = name;
        this.age = age;
    }
    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    @Override // 重写排序规则
    public int comepareTo(Person o){
        //return 0; // 认为元素都是相同的
        // 自定义比较的规则,比较两个人的年龄(this,参数person)
        //return this.getAge() - o.getAge();   // 年龄升序排序
        return o.getAge() - this.getAge();  // 年龄降序排序
    }
}
public class CollectionsDemo{
    public static void main(String[] args){
        ArrayList<Person> list = new ArrayList<Person>();
        list.add(new Person("张三"18));
        list.add(new Person("李四"20));
        list.add(new Person("王五"15));
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);
    }
 }
  • public static void sort(List list,Comparator<? super T> ):将集合中的元素按照指定规则排序。
import java.util.*;
   /*  Comparator和Comparable的区别:
    *       Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则。
    *       ComaraTo: 相当于找一个第三方的裁判,比较两个
    */
class Student{
    private String name;
    private int age;
    
    public Student(){
    }
    public Student(String name , int age){
        this.name = name;
        this.age = age;
    }
    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    @Override
    public String toString(){
        return "Student{ "+"name = '"+name+'\''+",age = " + age+'}';
    }
}
public class DemoSort{
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        ArrayList<Student> list02 = new ArrayList<Student>();
        list.add(1);
        list.add(3);
        list.add(2);
        System.out.println(list);
        // 传一个集合,传一个比较器
        Collections.sort(list,new Comparator<Integer>(){
            @Override // 重写比较的规则
            public int compare(Integer o1,Integer o2){
                return o1 - o2 ;  // 升序,反之降序(o2-o1)
            }
        });
        list02.add(new Student("张三",18));
        list02.add(new Student("李四",16));
        list02.add(new Student("王五",20));
        list02.add(new Student("赵六",18));
        list02.add(new Student("田七",17));
	Collections.sort(list02,new Comparator<Student>(){
            @Override // 重写比较的规则
            public int compare(Student o1,Student o2){
                // 按照年龄升序排序
                int result = o1.getAge()-o2.getAge();
                // 如果两个人年龄相同,再用姓名第一个字比较
                if(result == 0){
                    result = o1.getName().charAt(0)-o2.getName().charAt(0);
                }
                return result;
            }
        });
        System.out.println(list);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值