1. 程式人生 > 其它 >【重學Java】可變引數

【重學Java】可變引數

可變引數

可變引數【應用】

  • 可變引數介紹

    • 可變引數又稱引數個數可變,用作方法的形參出現,那麼方法引數個數就是可變的了
    • 方法的引數型別已經確定,個數不確定,我們可以使用可變引數
  • 可變引數定義格式

    修飾符 返回值型別 方法名(資料型別… 變數名) {  }
    
  • 可變引數的注意事項

    • 這裡的變數其實是一個數組
    • 如果一個方法有多個引數,包含可變引數,可變引數要放在最後
  • 可變引數的基本使用

    public class ArgsDemo01 {
        public static void main(String[] args) {
            System.out.println(sum(10, 20));
            System.out.println(sum(10, 20, 30));
            System.out.println(sum(10, 20, 30, 40));
    
            System.out.println(sum(10,20,30,40,50));
            System.out.println(sum(10,20,30,40,50,60));
            System.out.println(sum(10,20,30,40,50,60,70));
            System.out.println(sum(10,20,30,40,50,60,70,80,90,100));
        }
      //如果一個方法有多個引數,包含可變引數,可變引數要放在最後
    //    public static int sum(int b,int... a) {
    //        return 0;
    //    }
    
        public static int sum(int... a) {
            int sum = 0;
            for(int i : a) {
                sum += i;
            }
            return sum;
        }
    }
    

建立不可變集合【理解】

目的:實現集合元素的批量新增。

  • 方法介紹

    • 在List、Set、Map介面中,都存在of方法,可以建立一個不可變的集合
      • 這個集合不能新增,不能刪除,不能修改
      • 但是可以結合集合的帶參構造,實現集合的批量新增
    • 在Map介面中,還有一個ofEntries方法可以提高程式碼的閱讀性
      • 首先會把鍵值對封裝成一個Entry物件,再把這個Entry物件新增到集合當中
  • 示例程式碼

    public class MyVariableParameter4 {
        public static void main(String[] args) {
            // static <E>  List<E>  of(E…elements)  建立一個具有指定元素的List集合物件
            //static <E>  Set<E>  of(E…elements)    建立一個具有指定元素的Set集合物件
            //static <K , V>   Map<K,V>  of(E…elements) 建立一個具有指定元素的Map集合物件
    
            //method1();
            //method2();
            //method3();
            //method4();
    
        }
    
        private static void method4() {
            Map<String, String> map = Map.ofEntries(
                    Map.entry("zhangsan", "江蘇"),
                    Map.entry("lisi", "北京"));
            System.out.println(map);
        }
    
        private static void method3() {
            Map<String, String> map = Map.of("zhangsan", "江蘇", "lisi", "北京", "wangwu", "天津");
            System.out.println(map);
        }
    
        private static void method2() {
            //set傳遞的引數當中,不能存在重複的元素。
            Set<String> set = Set.of("a", "b", "c", "d","a");
            System.out.println(set);
        }
    
        private static void method1() {
            List<String> list = List.of("a", "b", "c", "d");
            System.out.println(list);
            //list.add("Q");
            //list.remove("a");
            //list.set(0,"A");
            //System.out.println(list);
    
    //        ArrayList<String> list2 = new ArrayList<>();
    //        list2.add("aaa");
    //        list2.add("aaa");
    //        list2.add("aaa");
    //        list2.add("aaa");
    //  Exception in thread "main" java.lang.UnsupportedOperationException
           
      	//不可變集合的目的是實現集合的批量新增。
            //首先是通過呼叫List.of方法來建立一個不可變的集合,of方法的形參就是一個可變引數。
            //再建立一個ArrayList集合,並把這個不可變的集合中所有的資料,都新增到ArrayList中。
            ArrayList<String> list3 = new ArrayList<>(List.of("a", "b", "c", "d"));
            System.out.println(list3);
        }
    }