再多学一点吧

导航

Collections集合工具类和可变参数

Collections常用的API:

    public static <T> boolean addAll(Collection<? super T> c, T... elements)    给集合对象批量添加元素

    public static void shuffle(List<?> list)   打乱集合顺序(只能打乱List集合

    public static <T> void sort(List<T> list )    将集合中元素按照默认规则排序(给List集合升序排序)

    public static <T> void sort(List<T> list, Comparator<? super T> )  将集合中元素按照

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

public class CollectionsDemo1 {
    public static void main(String[] args) {
        //给集合批量添加元素
        Collection<String> name=new ArrayList<>();
        Collections.addAll(name,"喜羊羊","懒洋洋","美羊羊");
        System.out.println(name);  //  [喜羊羊, 懒洋洋, 美羊羊]
        //打乱集合顺序(有序集合)
        List<String> name1=new ArrayList<>();
        Collections.addAll(name1,"灰太狼1","红太狼2","小灰灰3");
        Collections.shuffle(name1); //每次打乱都不一样
        System.out.println(name1);  //  [红太狼2, 灰太狼1, 小灰灰3]
        //升序排序(List),根据首字符ACAII码值
        List<String> name2=new ArrayList<>();
        Collections.addAll(name2,"apple","pear","orange","banana","78","A");
        Collections.sort(name2);
        System.out.println(name2);
        
    }
}

------------------------------------------------------------------------------------------------------------------------------------------------

注意:如果类有比较规则,而这里有比较器,优先使用比较器

 

package com.day04.practice2;

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

public class CollectionDemo2 {
    public static void main(String[] args) {
        List<Human> l=new ArrayList<>();
        Collections.addAll(l,new Human("张三",66),new Human("李四",28), new Human("毛六",27));
        Collections.sort(l);
        System.out.println(l);

        //第二种为集合设置比较器Compartor对象,重写比较方法
        List<Human> ll=new ArrayList<>();
        Collections.addAll(ll,new Human("张三",66),new Human("李四",28), new Human("毛六",27));
        Collections.sort(ll, new Comparator<Human>() {
            @Override
            public  int compare(Human h1,Human h2){
                return h2.getAge()-h1.getAge();
            }

        });
        System.out.println(ll);
    }
}




class Human implements Comparable<Human>{ //第一种为对象的类实现比较器接口Comparable,重写比较方法
    private String name;
    private int age;

    @Override
    public int compareTo(Human h){
        if(this.age>h.age)return 1;
        if(this.age<h.age)return -1;
        return 0;
    }

    Human(){

    }
    Human(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Human{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

//输出结果
//[Human{name='毛六', age=27}, Human{name='李四', age=28}, Human{name='张三', age=66}]
//[Human{name='张三', age=66}, Human{name='李四', age=28}, Human{name='毛六', age=27}]

 

可变参数在方法内部本质是就是一个数组

可变参数的格式:数据类型...参数名称

注意:1.一个 形参列表可变参数只能有一个!!

   2.可变参数必须放在形参列表的最后面!!

public class KeBian {
    public static void main(String[] args) {
        sum(15);
        sum(125,78,45);
        sum(new int[]{78,45,12,78});
        System.out.println("-------------------");
        sum1("yyyy");
        sum1("hhhh",89,45);
        sum1("21564",new int[]{787,6,8,7});

    }

    public  static void sum(int...nums){
        System.out.println("长度:"+nums.length);
        System.out.println("内容:"+Arrays.toString(nums));
    }


    public static void sum1(String str,int...nums){
        System.out.println("长度:"+nums.length);
        System.out.println("内容:"+Arrays.toString(nums));
    }
}

输出结果:长度:1
内容:[15]
长度:3
内容:[125, 78, 45]
长度:4
内容:[78, 45, 12, 78]
-------------------
长度:0
内容:[]
长度:2
内容:[89, 45]
长度:4
内容:[787, 6, 8, 7]

 

 

    

posted on 2021-08-09 23:02  糟糟张  阅读(96)  评论(0编辑  收藏  举报