java 泛型數組列表


如下代碼:

 1 package com.company;
 2 
 3 import java.lang.reflect.Array;
 4 import java.util.ArrayList;
 5 
 6 public class Array_List {
 7     public static void main(String[] args){
 8         ArrayList<String> arr_a=new ArrayList<>();
 9         for(int i=0;i<20;i++){
10             arr_a.add("ok");
11         }
12         String[] int_ar=new String[20];
13         String[] new_ar= arr_a.toArray(int_ar);
14         System.out.println(arr_a.get(1));
15         for(String i:arr_a){System.out.println(i);}
16     }
17 }

 

 1 package com.company;
 2 
 3 import java.lang.reflect.Array;
 4 import java.util.ArrayList;
 5 
 6 public class Array_List {
 7     public static void main(String[] args){
 8         ArrayList<Integer> arr_a=new ArrayList<>();
 9         for(int i=0;i<20;i++){
10             arr_a.add(i);
11         }
12         Integer[] int_ar=new Integer[20];
13         System.out.println(arr_a.get(1));
14         for(Integer i:arr_a){System.out.println(i);}
15     }
16 }

 

泛型數組列表:

之前我們接觸的原始數組,無法確定動態確定數組的大小,在初始化數組的時候定義其大小,之后如果在改變其大小比較麻煩。於是就有ArrayList類實現動態數組大小。

當當前數組列表超過當前長度,會把當前的數組元素拷貝到大的數組內。

 1 public class Array_List {
 2     public static void main(String[] args){
 3         ArrayList<Integer> arr_a=new ArrayList<>(10);  4         for(int i=0;i<20;i++){
 5             arr_a.add(i);
 6         }
 7         System.out.println(arr_a.get(1));
 8         for(Integer i:arr_a){System.out.println(i);}
 9     }
10 }

語法:

ArrayList<參數類型>  變量名字= new ArrayList<參數類型可以沒有>(容量大小也可以不寫)

注意:只能是引用對象才可以使用ArrayList 如果基本數據類型想使用的話需要使用裝箱器才可以使用!!!

方法:

添加、刪除、獲取等方法。

其中獲取和設置(get、set方法):如果數據列表中為空或者超出索引set會報錯。我們可以用先在插入對象的時候,可以使用ArrayList,獲取的時候 我們進行轉換到普通數組使用[數字]風格來獲取數組的元素。如下:

 1 package com.company;
 2 
 3 import java.lang.reflect.Array;
 4 import java.util.ArrayList;
 5 
 6 public class Array_List {
 7     public static void main(String[] args){
 8         ArrayList<Integer> arr_a=new ArrayList<>(10);
 9         for(int i=0;i<20;i++){
10             arr_a.add(i);
11         }
12         Integer[] ar2= new Integer[arr_a.size()]; 13         Integer[] new_ar=(Integer[]) arr_a.toArray(ar2); 14         System.out.println(new_ar[0]); 15     }
16 }

在ArrayList<>中參數類型不允許基本數據類型比如:int 、float、double等,但是基本數據類型也對應的對象,比如:int=>Integer   float=>Float    double->Double  short=>Short  bytes=>Bytes boolean=>Boolean  我將對應的類叫做包裝器。

對象包裝器類是不可變的,一般構造器生成,就不允許改變其中的值,同時包裝的類還是final,因此不能定義子類。

自動裝箱:

在如上基本類型的包裝器中,在調用ArrayList的時候,我們可以直接使用:arr_a.add(3);但是實際編譯器幫我們實現這個過程:arr_a.add(Integer.valueOf(4));這個過程叫做自動裝箱autoboxing

 1 package com.company;
 2 
 3 import java.lang.reflect.Array;
 4 import java.util.ArrayList;
 5 
 6 public class Array_List {
 7     public static void main(String[] args){
 8         ArrayList<Integer> arr_a=new ArrayList<>(10);
 9         for(int i=0;i<20;i++){
10             arr_a.add(i);
11         }
12         arr_a.add(3);
13         arr_a.add(Integer.valueOf(4));
14         Integer[] ar2= new Integer[arr_a.size()];
15         Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
16         System.out.println(new_ar[arr_a.size()-1]);
17         System.out.println(new_ar[arr_a.size()-2]);
18     }
19 }

 

 自動拆箱:

比如我們獲取上面的數組的元素值。System.out.println(arr_a.get(3)); 相當於System.out.println(arr_a.get(3).intValue());  我們叫做自動拆箱。包括變量的自增都屬於自動拆箱在自動裝箱!

 1 import java.util.ArrayList;
 2 
 3 public class Array_List {
 4     public static void main(String[] args){
 5         ArrayList<Integer> arr_a=new ArrayList<>(10);
 6         for(int i=0;i<20;i++){
 7             arr_a.add(i);
 8         }
 9         arr_a.add(3);
10         arr_a.add(Integer.valueOf(4));
11         System.out.println(arr_a.get(3)); 12         System.out.println(arr_a.get(3).intValue()); 13         Integer[] ar2= new Integer[arr_a.size()];
14         Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
15         System.out.println(new_ar[arr_a.size()-1]);
16         System.out.println(new_ar[arr_a.size()-2]);
17     }
18 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM