• 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);    
        }
    }
  • 相关阅读:
    Java-使用IO流对大文件进行分割和分割后的合并
    Java-单向链表算法
    Java-二分查找算法
    Java-二叉树算法
    Java-对象比较器
    Android中Activity的四种开发模式
    Struts2工作原理
    C++实现单例模式
    数组中有一个数字出现的次数超过数组的一半,请找出这个数字
    c++ enum用法【转】
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10133170.html
Copyright © 2020-2023  润新知