首页 > 编程语言 >Java之可变参数和Collections的详细解析

Java之可变参数和Collections的详细解析

时间:2023-12-16 23:32:07浏览次数:40  
标签:Java list add Collections Student static 解析 public


 1. 可变参数

JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化.

格式:

修饰符 返回值类型 方法名(参数类型... 形参名){  }

底层:

其实就是一个数组

好处:

在传递数据的时候,省的我们自己创建数组并添加元素了,JDK底层帮我们自动创建数组并添加元素了

代码演示:

public class ChangeArgs {
    public static void main(String[] args) {
        int sum = getSum(6, 7, 2, 12, 2121);
        System.out.println(sum);
    }
    
    public static int getSum(int... arr) {
        int sum = 0;
         for (int a : arr) {
         sum += a;
        }
         return sum;
    }
}

Java之可变参数和Collections的详细解析_可变参数

注意:

1.一个方法只能有一个可变参数

2.如果方法中有多个参数,可变参数要放到最后。

应用场景: Collections

在Collections中也提供了添加一些元素方法:

public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。

代码演示:

public class CollectionsDemo {
    public static void main(String[] args) {
      ArrayList<Integer> list = new ArrayList<Integer>();
      //原来写法
      //list.add(12);
      //list.add(14);
      //list.add(15);
      //list.add(1000);
      //采用工具类 完成 往集合中添加元素  
      Collections.addAll(list, 5, 222, 1,2);
      System.out.println(list);
}

Java之可变参数和Collections的详细解析_List_02

2. Collections类

2.1 Collections常用功能

  • java.utils.Collections是集合工具类,用来对集合进行操作。
    常用方法如下:
  • public static void shuffle(List<?> list):打乱集合顺序。
  • public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。
  • public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。

代码演示:

public class CollectionsDemo {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
   
        list.add(100);
        list.add(300);
        list.add(200);
        list.add(50);
        //排序方法 
        Collections.sort(list);
        System.out.println(list);
    }
}

Java之可变参数和Collections的详细解析_System_03

结果:
[50,100, 200, 300]

我们的集合按照默认的自然顺序进行了排列,如果想要指定顺序那该怎么办呢?

2.2 Comparator比较器

创建一个学生类,存储到ArrayList集合中完成指定排序操作。

Student 类

public class Student{
    private String name;
    private int age;
    //构造方法
    //get/set
    //toString
}

Java之可变参数和Collections的详细解析_List_04

测试类:

public class Demo {
    public static void main(String[] args) {
        // 创建四个学生对象 存储到集合中
        ArrayList<Student> list = new ArrayList<Student>();

        list.add(new Student("rose",18));
        list.add(new Student("jack",16));
        list.add(new Student("abc",20));
        Collections.sort(list, new Comparator<Student>() {
          @Override
            public int compare(Student o1, Student o2) {
            return o1.getAge()-o2.getAge();//以学生的年龄升序
         }
        });


        for (Student student : list) {
            System.out.println(student);
        }
    }
}
Student{name='jack', age=16}
Student{name='rose', age=18}
Student{name='abc', age=20}

Java之可变参数和Collections的详细解析_List_05



标签:Java,list,add,Collections,Student,static,解析,public
From: https://blog.51cto.com/u_16265376/8854728

相关文章

  • 一道很不错的高中数学题的题解解析
    引:上周六上午把一道高中的数学竞赛题(一道8分的填空题,原题如下图所示)当成一道大题(如上)郑重其事地和孩子以互动的方式探讨了这个题的题解分析. 这是一道出得很好的题.其题解所涉及的知识不超出高一目前所学内容,因此高一的学生也是可能做得出来的.但这题是一道很综合的题,涉......
  • 无涯教程-Java - boolean matches(String regex)函数
    此字符串是否与给定的正则表达式匹配,以str.matches(regex)形式调用此方法所产生的输出与表达式Pattern.matches(regex,str)完全相同。 booleanmatches-语法这是此方法的语法-publicbooleanmatches(Stringregex)这是参数的详细信息-regex  - 此字符串要匹配的正......
  • 第八章:SpringBoot-Java工程及关系和修改启动logo(了解)
    一、springbootJava工程(了解)二、关闭&修改启动logo(了解)......
  • Java-用递归的思想求斐波那契数列第n项的值
    一、思想-多路递归多路递归multirecursion就是在每次递归时包含多次(大于一次)的自身调用。也就是一个问题会被拆分成多个子问题。多路递归比单路递归在分析时间复杂度上比较复杂一些。二、斐波那契数列三、例子以n=4为例,当我们用下面(第四部分)的代码实现时,这个多路递归的求解过......
  • Feign源码解析:初始化过程(一)
    前言打算系统分析下Feign的代码,上一篇讲了下Feign的历史,本篇的话,先讲下Feign相关的beanDefinition,beanDefinition就是bean的设计图,bean都是按照beanDefinition来制造的。Feign相关的bean不少,有一些是因为我们的Feign相关注解而引入的,有一部分是因为spring的自动装配来自动引入的......
  • 命令行窗口java运行报错:Error: A JNI error has occurred,please check your installa
     jre匹配问题解决方法:第一步:右键点击构建路径。 第二步将原来的系统库移除第三步添加系统库 第四步选择与自己电脑java相符的执行环境 ......
  • 无涯教程-Java - int length()函数
    此方法返回此字符串的长度。长度等于字符串中16位Unicode字符的数量。intlength()-语法这是此方法的语法-publicintlength()intlength()-返回值此方法返回此对象表示的字符序列的长度。intlength()-示例importjava.io.*;publicclassTest{publicstati......
  • 【LevelDB】【include】Slice类解析
    Slice类Slice类是对字符串的封装,设计思想与std::string_view相似。源文件位置include/leveldb/slice.h优点:1、拷贝速度快,Slice的拷贝仅需拷贝数据指针和数据长度2、多个Slice可指向同个字符串,减少资源开销3、支持std::string......
  • 无涯教程-Java - int lastIndexOf(String str)函数
    如果string参数作为该对象中的子字符串出现一次或多次,则它返回最后出现的第一个字符的索引,如果没找到,则返回-1。intlastIndexOf-语法这是此方法的语法-publicintlastIndexOf(Stringstr)这是参数的详细信息-str   -  一个字符串。intlastIndexOf-返回值......
  • Java正则操作类Pattern和Matcher​详解
    Java正则操作类Pattern和MatcherPattern类Pattern位于java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态compile方法,它返回一个Pattern.split(CharSeque......