陣列And連結串列轉換全面講解
阿新 • • 發佈:2021-01-08
前言
陣列與連結串列都是我們在編碼過程中最經常使用的資料結構,陣列是一種連續的資料結構,而連結串列是一種離散的資料結構,我們在編碼的過程中經常需要在這兩種資料結構之間進行來回的轉換,從而來解決我們遇到的一些問題,這裡我總結了一些陣列和連結串列之間的轉換方法。
陣列到集合的轉換
- 遍歷陣列,使用list.add()逐個新增
迴圈遍歷方法是我們最容易想到的,但是涉及到迴圈時間效率就比較低。
int arr[] = {1, 2, 3, 4, 5}; List<Integer> list = new ArrayList<>(); for (int i = 0; i < arr.length;i++){ list.add(arr[i]);}
執行結果:
這種方法比較簡單,也非常好理解。
- 陣列自帶的工具集,Arrays.aslist(arr).
陣列自帶的工具集雖然使用非常方便,不用自己編寫程式碼,直接呼叫既可以使用,但是也有一定的侷限性,只能轉換引用型別的陣列,不能轉換基本資料型別的陣列。
比如可以轉換陣列:String arr[];
但是不能轉換陣列:int arr[], 只能轉換integer arr[].
Integer arr[] = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
執行結果:
這種方法針對於引用型別的陣列使用起來還是非常的方便的,直接呼叫系統類就可以實現。
- 基本資料型別陣列的一步轉換
方法2只能轉換基本資料型別不能轉換引用資料型別,但是我們常常使用的都是Int整型陣列,所以這種方法可以將基本資料型別也一步轉換為連結串列。
int arr[] = {1, 2, 3, 4, 5};
List<Integer> list = IntStream.of(arr).boxed().collect(Collectors.toList());
執行結果:
連結串列轉換為陣列
- 遍歷集合
將連結串列轉換為陣列也是我們常常要使用到的,第一種方式就是遍歷連結串列將連結串列的數值賦值給陣列。
List<Integer> list=new ArrayList<>(); list.add(1); list.add(3); list.add(2); int arr[]=new int[list.size()]; for(int i=0;i<list.size();i++){ arr[i]=list.get(i);}
執行結果:
- 使用工具集
可以將連結串列轉化為引用資料型別的陣列
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
Integer arr[]=new Integer[list.size()];
list.toArray(arr);
for(Integer a:arr){
System.out.print(a+" ");}
這裡可以將連結串列轉換為引用資料型別,然後再將引用資料型別轉變為基本資料型別即可。
總結
因為陣列和連結串列是我們非常常見的兩種資料結構,在我們的編碼過程中也是十分重要的,而兩者之間的轉化也是我麼常做的,所以我總結了常用的幾種轉換方法.
希望可以幫到小夥伴嗎。希望小夥伴們可以點贊關注。