Collections中的三个常用方法,addAll,sort,shuffle

package Day15;/*
 @Author wanghongyuan
  @Date 2020/12/24

*/

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

/*
    java.utils.Collection是集合的工具类,用来对集合进行操作,部分方法如下:
    -public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素。
    -public static void shuffle(list<?> list)打乱顺序:打乱集合的顺序。
    -public static <T> void sort(list<T> list):将集合中元素按照默认规则排序。
    注意:
        sort(list<T> list)使用前提
        被排序的集合里边存储的元素,必须实现Comparable,重写接口中的compareTo定义排序的规则

     Comparable接口的排序规则:
        自己(this)-参数:升序
        参数-自己(this): 降序

    -public static <T> void sort(list<T> list,Comparator<? super T>):将集合中的元素按照指定规则排序。

    Comparable 和 Comparator的区别:
        Comparable:自己(this)和别人(参数)的比较,自己需要实现Comparable接口,重写比较的规则CompareTo方法;

        Comparator:找一个第三方裁判,比较两个。

 */
public class Demo01Collections {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<String> list = new ArrayList<>();
        //往集合中添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println(list);
    //  -public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素。
//        静态方法可以直接调用
        Collections.addAll(list,"2","4","5","6","123");
        System.out.println(list);
        Collections.shuffle(list);
        System.out.println(list);
//        将集合中的元素按照默认规则排序,只能传list集合,也是静态方法可以直接通过方法调用。
        Collections.sort(list);
        System.out.println(list);//默认是升序的
        ArrayList<String> arr = new ArrayList<>();
        System.out.println("===============");
        Collections.addAll(arr,"123","sad","中国","GOOD");
        System.out.println(arr);
//        字符串的升序
        Collections.sort(arr);
        System.out.println(arr);

//        创建一个集合泛型为自定义的类->Person
        ArrayList<Person> list01 = new ArrayList<>();
//        匿名对象创建周星驰等
        list01.add(new Person("周星驰",23));
        list01.add(new Person("刘德华",22));
        list01.add(new Person("a甄子丹",24));
        list01.add(new Person("c成龙",24));
        list01.add(new Person("b成龙",24));
        System.out.println(list01);
        Collections.sort(list01);
        System.out.println(list01);
//        Collections.sort(list01, new Comparator<Person>() {
    
    
//            //重写比较的规则
//            @Override
//            public int compare(Person o1, Person o2) {
    
    
//                // 按照年龄升序排序
//                return o1.getAge() - o2.getAge();
                return o1.getName()-o2.getName();
//            }
//        });
        Collections.sort(list01, new Comparator<Person>() {
    
    
            //重写比较的规则
            @Override
            public int compare(Person o1, Person o2) {
    
    
                // 按照年龄升序排序
                int result = o1.getAge() - o2.getAge();
//                如果两个人的年龄相同,再使用姓名的第一个字比较
                if (result==0){
    
    
                    result = o1.getName().charAt(0) - o2.getName().charAt(0);
                }
                return result;
//                return o1.getName()-o2.getName();
            }
        });
        System.out.println(list01);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41977380/article/details/111617296