28、可变参数和集合数组的互转

可变参数

在定义方法的时候不确定该定义多少个参数时,可以使用可变参数来定义,这样方法的参数个数会根据调用者来确定。
注意:如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个。
格式:

修饰符 返回值类型 方法名(数据类型…  变量名){}

例:

public class list_test_12 {
    public static void main(String[] args) {
        print(1,2,3,4,5);
        change("111asa",12,13,14,15);
    }

    //可变参数其实是一个数组
    public static void print(int ... arr) {
        for(int i = 0;i <arr.length;i++ ) {
            System.out.println(arr[i]);
        }
    }

    //如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
    public static void change(String s,int ... arr) {
        for(int i = 0;i < arr.length;i++) {
            System.out.println(arr[i]);
        }
    }
}

数组和集合相互转化

集合转数组:

package com.sutaoyu.list;

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

public class list_test_12 {
    public static void main(String[] args) {
        List<String> list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        //当集合转换数组时,数组长度如果是<=集合的size时,转换后的数组长度等于集合的size
        //如果数组的长度大于了size,分配的数组长度就和你指定的长度一样
        String[] array = list.toArray(new String[3]);
        for(String s : array) {
            System.out.println(s);
        }
    }
}

数组转集合,注意转换后的集合不能调用其add方法向里面添加数据,否则会报出UnsupportedOperationException

//数组转集合
String[] arr = {"a","b","c"};
//将数组转换成集合
List<String> listArray = Arrays.asList(arr);
//不能添加
//listArray.add("d");
System.out.println(listArray);
//通过这种方式将listArray转换成真正的ArrayList
ArrayList<String> arrayList = new ArrayList<String>(listArray);

通过Arrays.asList((T… a))的源码可以看到,这里面返回的ArrayList是在Arrays类里面定义的一个内部类,并非java.util包下的ArrayList。

基本数据类型的数组转换成集合,会将整个数组当作一个对象转换,下面程序将会打印出list的对象地址

int[] arr = {1,2,3,4,5};
List<int[]> list = Arrays.asList(arr);
System.out.println(list);

将数组转换成集合,数组中的数据必须是引用数据类型

Integer[] arr = {11,22,33,44,55};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);

静态导入

在导入相关包时,如果是这个类中的方法是static修饰的,可以直接导入的方式将这个方法进来。开发中使用的不多。

package com.monkey1024.list;

import static java.util.Arrays.sort;            //静态导入
/**
 * 静态导入
 *
 */
public class StaticImport01 {

    public static void main(String[] args) {
        int[] arr = {55,22,33,44,11};
        sort(arr);
    }
}

原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10133170.html

时间: 2024-10-19 13:35:14

28、可变参数和集合数组的互转的相关文章

Java的LinkedHashSet、Map接口、可变参数、集合嵌套、

1.LinkedHashSet:(1)LinkedHashSet集合保证元素的存入和取出的顺序: package com.oracle.demo01; import java.util.HashSet; import java.util.LinkedHashSet; public class demo01 { public static void main(String[] args) { //不能存重复元素,但是LinkedHashSet是有序的. LinkedHashSet<String>

数组与可变参数

定义一个函数时,如果我们不确定无法确定参数的个数,那么就需要使用到可变参数,可变参数就是可以接收数量不确定的多个参数值. 在JDK 1.5之前都是通过数组来解决参数不确定问题.其实可变参数本质上就是一个数组,可以通过数组的下标来反问可变参数的元素. 1.将可变参数赋值给数组类型对象 由于可变参数也是数组,因此,可以直接将可变参数对象赋值给数组类型对象. 2.可变参数值的遍历: 由于可变参数就是一个数组,只是写法与数组不一样.当需要访问可变参数值时,可以像访问一个数组一样访问,以及可以使用数组对象

可变参数与数组

初学时,不知道这 3个点  是什么意思,后来才知道 这是可变参数. 也可以理解成是数组. public static String handleSrc(String... srcArr) throws Exception { String exportBaseSrc = System.getProperty("user.home"); File file = new File(exportBaseSrc); if (!file.exists()) { throw new Excepti

黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举

一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包中所有的类. (2)import static是导入一个类中的某个静态方法或所有的静态方法. 注:在调用静态导入的类的静态方法时,可以不用再写类名.如Arrays.sort(int[])可以直接写sort(int[]); 2.静态导入的写法: (1)import static java.util.Arrays.*;   表示导入Arrays类中的所有静态成员. (2)import stati

javaweb学习总结二(静态导入、自动拆装箱、增强for与可变参数)

一:静态导入语法:import static 导入类.成员变量|成员方法那么在代码中可以直接使用变量或者方法,而不需要通过类名.来调用 静态导入: 1 import static java.lang.System.out; 那么在代码中直接调用变量: 1 @Test 2 //测试静态导入 3 public void testStaticImport() { 4 out.println("static import..."); 5 } 二:装箱或者拆箱装箱:将基本数据类型赋值给引用数据类

Java基础:可变参数(Varagrs)的使用注意事项

因为在先前学习java的过程中,有涉及到可变参数,但没有太深入的去学习.所以最近自己找了些相关资料,想加深了解.下面就是学习整理后的内容了. 在JDK1.5后,定义方法时,可以使用同类型个数不确定的参数. 使用可变参数定义方法时,方法实际上是把这些不确定数目的参数隐式地都装进一个数组中, 然后方法再从这个数组中取出元素来使用. 也就是说,方法使用可变参数,和JDK1.4中方法使用数组参数时的处理方式是一样的,都是取出数组元素来使用. 一.定义方法: 返回值 方法名(参数类型...可变参数名) 1

Java方法的可变参数个数

什么是可变参数 可变参数,具体来说是, 1.传递参数的时候可以传递0个.1个.2个--n个. 2.也可以传递一个数组. 3.可变参数,必须是方法的最后一个参数. 示例 //业务逻辑类 /** * 根据 Workplandetailid获取任务对象 * * @param detailId * @return */ public Taskinfo findByWorkplandetailid(String detailId) throws Exception { StringBuffer strbu

第四十二条:慎用可变参数

Java 1.5发行版本中增加了可变参数方法.可变参数方法接受0个或者多个指定类型的参数. 可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法. 这样由于可变参数的方法,可变参数时借助数组实现的的,所有调用可变参数的方法时,我们可以传入若干个参数,也可以传入保存 有若干个参数的数组. 对于可变参数使用,比较典型的一个方法是:Arrays.asList(T. . .   args) 我们调用这个方法时可以这样:  List<Inte

java可变参数例子:求学生成绩信息,不确定课程数

可变参数特点: 1)...只能出现在参数列表的最后2)...位于变量类型和变量名之间3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数 //可变参数也可用数组来解决这个问题 package Test; public class Student { private int []score; //各科成绩 private int scoreCount=0; //总课程数 //构造函数 Student(int id,String name,int...is