可变类型参数,Collections的addAll()方法,sort方法,shuffle方法

/*
可变参数:
概述:在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化.
格式:
修饰符 返回值类型 方法名(数据类型… 变量名){}
*/
#### 注意事项

​ 1.一个方法只能有一个可变参数
//public static void getNums(int…sum,String…strings){
//编译报错,有两个可变参数
//}
​ 2.如果方法中有多个参数,可变参数要放到最后。
//public static void getNums(String…nus,int a){
//编译报错,可变参数没有放到最后
//}
2.Collections的addAll()方法

  ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"ad","1","我是中国人");//第一个参数是list集合
        //第二个参数是元素类型
        System.out.println(list);

3.Collections的shuffle方法

  • public static void shuffle(List<?> list):打乱集合顺序。
  • 代码如下:
package Collecions的常用方法;

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

/**
 * @author weijisheng
 * @create 2021-07-31 11:19
 */
public class ShuffleTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(23);
        list.add(13);
        list.add(223);
        list.add(1);
        list.add(57);
        list.add(18);
        list.add(45);
        list.add(45);
        System.out.println(list);//[23, 13, 223, 1, 57, 18, 45, 45]
        Collections.shuffle(list);//打乱集合顺序
        System.out.println(list);//[45, 223, 23, 45, 18, 57, 1, 13]
    }
}

4.Collections的sort方法。

  • public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。
  • public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。
    代码:
在这里插入代码片

总结:

- public static void shuffle(List<?> list):打乱集合顺序。
- public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。
    默认规则: 事先写好的排序规则
    在哪里写好排序规则?---->集合元素所属的类中写好排序规则(通过实现Comparable接口,重写compareTo(T o)方法写好排序规则)
     排序规则: 
		前减后  升序 
    	后减前  降序
    	前: this:参数  
    	代码如下:
    	

```java
package Collecions的常用方法;

import java.util.Comparator;

/**
 * @author weijisheng
 * @create 2021-07-31 14:36
 */
public class Student implements Comparable {
    int age;

    public Student(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                '}';
    }
```java
package Collecions的常用方法;

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

/**
 * @author weijisheng
 * @create 2021-07-31 14:36
 */
public class SortTest {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        Student student1 = new Student(12);
        Student student2 = new Student(12);
        Student student3 = new Student(21);
        Student student4 = new Student(15);
        list.add(student1);
        list.add(student2);
        list.add(student3);
        list.add(student4);
        System.out.println(list);//[Student{age=12}, Student{age=12}, Student{age=21}, Student{age=15}]
        Collections.sort(list);//要想用这个方法必须实现Comparable接口,而且实现compareto方法。或则通过匿名内部类实现
        System.out.println(list);//[Student{age=21}, Student{age=15}, Student{age=12}, Student{age=12}]
    }
}

@Override
public int compareTo(Object o) {
    //制定规则排序
    //前减后,升序。后减前,降序。
    //前this,后参数o
    Student o1=null;
    if(o instanceof Student){
         o1= (Student) o;
    }
    return o1.age-this.age;
}

}

- public static <T> void sort(List<T> list,Comparator<? super T>  com):将集合中元素按照指定规则排序。
   指定规则排序:  通过Comparator参数来指定
   通过传入Comparator接口的匿名内部类,重写compare(T o1,T o2)方法,在该方法中指定排序规则      
      排序规则: 
		前减后  升序 
    	后减前  降序
    	前: 第一个参数   后:第二个参数    
    	注意:Integer类型的可以直接相减,但是字符串虽然实现接口,但是必须要firstString.compareTo(secondString);
package Collecions的常用方法;

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

/**
 * @author weijisheng
 * @create 2021-07-31 14:36
 */
public class SortTest {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        Student student1 = new Student(12);
        Student student2 = new Student(12);
        Student student3 = new Student(21);
        Student student4 = new Student(15);
        list.add(student1);
        list.add(student2);
        list.add(student3);
        list.add(student4);
        System.out.println(list);//[Student{age=12}, Student{age=12}, Student{age=21}, Student{age=15}]
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.age - o2.age;
            }
        });//要想用这个方法必须实现Comparable接口,而且实现compareto方法。
        System.out.println(list);//[Student{age=12}, Student{age=12}, Student{age=15}, Student{age=21}]
    }
}

第二种内部类实现方式比第一种方式更好,因为第一种的话创建不同的对象的话,无法实现在不同的对象上实现降序升序结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值