欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

帶你快速搞定java數組

 更新時間:2021年07月15日 08:44:58   作者:香菜聊游戲  
數組是相同類型數據的有序集合數組描述的是相同類型的若干個數據,按照一定的先后次序排列組合而成。其中,每一個數據稱作一個數組元素,每個數組元素可以通過一個下標來訪問它們數組的聲明創(chuàng)建

1、數組的定義

  • 先聲明后使用

數據類型 [] 數組名稱 = new 數據類型[長度];String[] arr3 = new String[5];

數據類型 數組名稱[] = new 數據類型[長度];String arr[] = new String[5];

  • 直接初始化

String[] arrs = {"1","2","3"};

  • 聲明并初始化
String[] sarr = new String[]{"a","b"};

2、array 遍歷

  • 流遍歷

將數組封裝成流進行操作,所有的操作都和列表一樣操作

public static void main(String[] args) {
      String[] arrs = {"1","2","3"};
      Arrays.stream(arrs).forEach(System.out::println);
  }
  • 普通遍歷

普通遍歷有三種方式,建議使用第一種,

如果需要使用索引可以使用第三種

如果想要倒序,則使用第三種

圖片

3、List和array 之間的轉換

list 和 array 之間大有聯系,list 的實現形式有鏈表和 數組,我們開發(fā)中經常需要對兩者進行轉換

1、數組轉list

  • 使用循環(huán) 轉換為list
  • 借助工具方法

代碼展示:

   public static void main(String[] args) {
       String[]  arrs = {"1","2","3"};
       // 循環(huán)轉換
       List<String> list1 = new ArrayList<>();
       for (String arr : arrs) {
           list1.add(arr);
      }
       // 借助數組工具類
       List<String> list2 = Arrays.asList(arrs);
       // 借助集合工具類
       List<String> list3 = new ArrayList<>();
       Collections.addAll(list2,arrs);
  }

2、list 轉數組

  • list 內置方法 toArray
  • 直接循環(huán)

代碼展示

   public static void main(String[] args) {
       List<String> list = Arrays.asList("1","2");
       String[] arr1 = new String[list.size()];
       // 循環(huán)遍歷賦值
       for (int i = 0; i < list.size(); i++) {
           arr1[i] = list.get(i);
      }
       // 調用list 方法
       String[] arr2 = (String[]) list.toArray();
  }

3、Arrays工具類

  • toString()

打印數組的方法,如果不調用這個方法打印的是內存地址

圖片

  • stream()

將數組轉換為流操作,具體就不演示了

  • sort()

對數組進行排序,注意這個排序是數組內部排序,沒有返回值,原數組會被改變

  • setAll

對數組內的元素進行操作,需要提供一個function,具有不同的數據類型

String[] arrs = {"1","2","3"};
      Arrays.setAll(arrs, e->e+"0");
      for (String arr : arrs) {
          System.out.println(arr);
      }
  • binarySearch

看名字都知道這是二分查找,具體的算法也很簡單,如果你還不會,可以補一下了,如果你懂二分查找應該知道,在調用這個方法之前要保證數組是有序的!

  • copyOf

名字也很直白,拷貝數組,擴展就是增加一些長度限制,或者填充數據的設置

  • equals

看起來不需要解釋

  • deepEquals

判斷兩個數組的深度是否相同,也就是數組嵌套了幾層

    public static void main(String[] args) {
          String[] arrs = {"1","2","3"};
          String[][] arr2 = {{"1"},{"2"},{"3"}};
          boolean b = Arrays.deepEquals(arr2, arrs);
          System.out.println(b);
      }
  • fill

認識英語的話基本上都懂,就是如何填充數組,當然你也可以自己進行循環(huán)操作

  • hashCode

計算數組的hash code

  • parallelPrefix

這個有些意思的,并行的累計操作數組內的元素,看個例子你就知道了

public static void main(String[] args) {
       String[]  sarr = new String[]{"a","b","c"};
       Arrays.parallelPrefix(sarr, (sum,e1)->e1 + sum);
       System.out.println(Arrays.toString(sarr));
  }

看下執(zhí)行結果:

圖片

4、可能遇到的問題

1、索引越界問題,數組的下標索引是從0 開始的,最后一個索引是length -1 ,注意不要越界

2、下面的方式創(chuàng)建的列表不支持添加

因為Arrays中的ArrayList并沒有實現remove()和add()方法,所以拋出了異常。所以說 Arrays.asList 返回的 List 是一個不可變長度的列表,此列表不再具備原 List 的很多特性,因此慎用 Arrays.asList 方法。

String[] arr = {"1", "2", "3"};
       List list = Arrays.asList(arr);
       arr[1] = "4";
       try {
           list.add("5");
      } catch (Exception ex) {
           ex.printStackTrace();
      }

3、一個小技巧,將數組繞成圈進行遍歷

使用對數組長度取余即可

   public static void main(String[] args) {
       String[] arr = {"a", "b", "c"};
       int i = 0;
       int j = 0;
       int length = arr.length;
       while (j++ <10){
           System.out.println(arr[i%length]);
           i++;
      }
  }

可以看到多次遍歷了數組

圖片

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望你能夠多多關注腳本之家的更多內容!

相關文章

最新評論