中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java容器類List ArrayList Vector有什么作用

發布時間:2021-12-21 10:16:01 來源:億速云 閱讀:161 作者:iii 欄目:編程語言

本篇內容主要講解“Java容器類List ArrayList Vector有什么作用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java容器類List ArrayList Vector有什么作用”吧!

List是接口,聲明了各個方法,不多說。且看ArrayList類。

ArrayList類的成員變量有Object[] elementData,int size;其中elementData數組用來存儲加入到ArrayList的對象,size為列表中實際的對象數目。ArrayList類不是線程安全的。

Vector與ArrayList的實現基本相同,只是Vector類是線程安全的,其方法都帶有synchronized關鍵字,如果不考慮線程同步的話,ArrayList性能要好一些。當前它們內部實現原理都是用到對象數組來實現,如果元素數目確定,直接用數組效率***。

簡單的用法:(后面是數據打印結果)

public class ListDemo {       /**       * @param args       */     public static void main(String[] args) {          List<String> list = new ArrayList<String>();          String[] strArr = new String[3];          boolean ret = list.add("haha");          list.add(new String("aa"));          list.add(null);           System.out.println(list.size());//3          System.out.println(ret);//true          System.out.println(list);//[haha, aa, null]          System.out.println(strArr);//[Ljava.lang.String;@1fee6fc          System.out.println(strArr.getClass().getName());//[Ljava.lang.String;          System.out.println(list.indexOf("aa"));//1          System.out.println(list.indexOf(null));//2          String str = list.set(1, "ee");          System.out.println(str);//aa          System.out.println(list);//[haha, ee, null]          String remove = list.remove(0);          System.out.println(remove);//haha          System.out.println(list);//[ee, null]          boolean result = list.remove("ff");          System.out.println(result);//false          result = list.remove("ee");          System.out.println(result);//true          System.out.println(list);//[null]      }   }
public ArrayList() {      this(10);      }   public ArrayList(int initialCapacity) {      super();              if (initialCapacity < 0)                   throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);      this.elementData = new Object[initialCapacity];      }     public boolean add(E e) {      ensureCapacity(size + 1);  // Increments modCount!!      elementData[size++] = e;      return true;      }     /*移除指定位置元素,注意每次移除數據都會將數組中后面數據移動來填充數組*/  public E remove(int index) {      RangeCheck(index);       modCount++;      E oldValue = (E) elementData[index];       int numMoved = size - index - 1;      if (numMoved > 0)          System.arraycopy(elementData, index+1, elementData, index,                   numMoved);      elementData[--size] = null; // index后面數據依次往前移動,將***一個位置賦值為0,讓gc來回收空間。      return oldValue;      }   public void ensureCapacity(int minCapacity) {      modCount++;//這個變量不用管。      int oldCapacity = elementData.length; //初始時設定的數組長度      if (minCapacity > oldCapacity) {    //如果數組對象數目>初始數組長度,則需要擴容。          Object oldData[] = elementData;          int newCapacity = (oldCapacity * 3)/2 + 1; //新的容量大小              if (newCapacity < minCapacity)          newCapacity = minCapacity;       /*該方法會創建一個新的對象數組,然后調用  System.arraycopy(original, 0, copy, 0,                  Math.min(original.length, newLength));方法將源數組數據拷貝到新數組中。引用更新,指    向新的對象數組。*/                    elementData = Arrays.copyOf(elementData, newCapacity);       }      }   /*將對象數組削減到當前元素數目大小,減少存儲空間*/     public void trimToSize() {       modCount++;      int oldCapacity = elementData.length;      if (size < oldCapacity) {              elementData = Arrays.copyOf(elementData, size);      }      }   /*查找對象***出現的位置,若沒有找到,返回-1。由  代碼可知,可以在list中加入null對象,并查找到。*/  public int indexOf(Object o) {      if (o == null) {          for (int i = 0; i < size; i++)          if (elementData[i]==null)              return i;      } else {          for (int i = 0; i < size; i++)          if (o.equals(elementData[i]))              return i;      }      return -1;      }   /*替換指定位置的元素值,返回該位置中old值*/ public E set(int index, E element) {      RangeCheck(index); //檢查范圍      E oldValue = (E) elementData[index];      elementData[index] = element;      return oldValue;      }   /*返回指定位置的值*/ public E get(int index) {      RangeCheck(index);       return (E) elementData[index];      }    private void RangeCheck(int index) {      if (index >= size)          throw new IndexOutOfBoundsException(          "Index: "+index+", Size: "+size);      }    public int size() {      return size;      }       public boolean isEmpty() {      return size == 0;      }

到此,相信大家對“Java容器類List ArrayList Vector有什么作用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋江市| 和林格尔县| 黔西县| 怀集县| 房产| 都安| 温州市| 土默特左旗| 鹤岗市| 清水河县| 鞍山市| 乐都县| 铜梁县| 瑞昌市| 乌拉特前旗| 兰西县| 芦山县| 江西省| 澄城县| 桦南县| 湖北省| 霍城县| 梅河口市| 涪陵区| 新和县| 虎林市| 黑山县| 凌源市| 永安市| 布拖县| 美姑县| 双峰县| 龙南县| 松江区| 和林格尔县| 桐城市| 江都市| 阿巴嘎旗| 资讯| 新泰市| 楚雄市|