日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ArrayList笔记

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ArrayList笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ArrayList筆記

只實現(xiàn)了Collection部分方法,我們需要的是實現(xiàn)排序,所以只要實現(xiàn)toArray()方法和set()方法即可用Collections.sort()來實現(xiàn)排序算法。還有很多不足的地方,日后實現(xiàn)。

import java.util.AbstractList; import java.util.Collections; import java.util.List; import java.util.Arrays; import java.util.RandomAccess;public class MyArray<T> extends AbstractList<T>implements List<T>, RandomAccess, Cloneable, java.io.Serializable{private static final long serialVersionUID = 1L;//元素列表private Object elementData[];//列表大小private int size;//列表容量private int capacity;/*** 默認構(gòu)造長度為10的數(shù)組*/public MyArray (){capacity = 10;elementData = new Object[capacity];}/*** 指定capacity大小的數(shù)組* @param capacity 容量*/public MyArray (int capacity){this.capacity = capacity;elementData = new Object[this.capacity];}/*** 插入元素到指定index* @param index 指定位置* @param value 待插入元素*/public void add(int index, T value){//此時size為真實存儲數(shù)量+1//比如size=11,真實數(shù)量有10個,而插入在第11個位置也是可以的rangeCheck(index);ensureCapacity(size+1);//對一維數(shù)組按值傳遞,在元素內(nèi)容巨大的情況下,它的執(zhí)行效率遠比for循環(huán)高的多System.arraycopy(elementData, index, elementData, index+1, size-index);elementData[index] = value;size++;}/*** 插入元素在列表某尾* @param value 待插入元素* @return */public boolean add(T value) {ensureCapacity(size+1);elementData[size++] = value;return true;}/*** 從位置0開始查找元素* @param value 待查找元素* @return index 索引位置*/public int indexOf(Object value){if(value==null){for(int i=0;i<size;i++){if(elementData[i]==null){return i;}}}else{for(int i=0;i<size;i++){if(value.equals(elementData[i])){return i;}}}return -1;}/*** 從列表某尾開始查找元素* @param value 待查找元素* @return index 索引位置*/public int lastIndexOf(Object value){if(value==null){for(int i=size-1;i>=0;i--){if(elementData[i]==null){return i;}}}else{for(int i=size-1;i>=0;i--){if(value.equals(elementData[i])){return i;}}}return -1;}/*** 刪除指定元素* @param value 待刪除元素* @return 是否刪除成功*/public boolean remove(Object value){if(value==null){for(int i=0;i<size;i++){if(elementData[i]==null){fastRemove(i);return true;}}}else{for(int i=0;i<size;i++){if(value.equals(elementData[i])){fastRemove(i);return true;}}}return false;}/*** 刪除指定位置元素* @param index 待刪除位置元素* @return T 返回被刪除元素*/public T remove(int index){rangeCheck(index);T oldValue = (T) elementData[index];fastRemove(index);return oldValue;}/*** 獲取指定位置的元素* @param index 指定位置* @return 返回指定位置元素*/public T get(int index){rangeCheck(index);return (T) elementData[index];}/*** 刪除指定位置的元素,效率高* @param index 待刪除位置*/private void fastRemove(int index){//待復制的元素數(shù)量int num = size-(index+1);//如果復制數(shù)量為0就不用去執(zhí)行arraycopyif(num>0)System.arraycopy(elementData, index+1, elementData, index, num);elementData[--size] = null;}/*** 檢查是否需要擴容*/private void ensureCapacity(int newsize) {if(size>=capacity){int newCapacity = (capacity*3)/2 + 1;if(newsize>newCapacity){newCapacity = newsize;}//copyOf最后調(diào)用的是底層實現(xiàn)的System.arraycopy函數(shù),效率比for高elementData = Arrays.copyOf(elementData, newCapacity);capacity = newCapacity;}}/*** 檢查有無越界* @param index 待檢查位置* @throws 越界則拋出異常*/private void rangeCheck(int index) {if(index<0||index>size)throw new ArrayIndexOutOfBoundsException();}public T set(int index, T value){rangeCheck(index);T old = (T) elementData[index];elementData[index] = value;return old;}@Overridepublic int size() {return size;}@Overridepublic boolean isEmpty() {return size==0;}@Overridepublic boolean contains(Object o) {return indexOf(o)>=0;}@Overridepublic <T> T[] toArray(T[] a) {//a的長度小于this的長度,說明a的空間太小if(a.length<size)return (T[]) Arrays.copyOf(elementData, size, a.getClass());//說明a的空間大于等于this的空間,所以直接復制就行了System.arraycopy(elementData, 0, a, 0, size);//說明a的空間比this空間大if(a.length>size)a[size] = null;return a;}@Overridepublic void clear() {for(int i=0;i<size;i++)elementData[i] = null;size = 0;}@Overridepublic Object[] toArray() {return Arrays.copyOf(elementData, size);}//測試單元public static void main(String[] args) {MyArray<Integer> myArray = new MyArray<Integer>();myArray.add(100);myArray.add(100);myArray.add(200);myArray.add(300);myArray.add(2,400);myArray.add(100);for(Integer i : myArray){System.out.print(i+" ");}System.out.println();Collections.sort(myArray);for(Integer i : myArray){System.out.print(i+" ");}}}

總結(jié)

以上是生活随笔為你收集整理的ArrayList笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 销魂奶水汁系列小说 | 久热中文 | 91天天操 | 亚洲第一二三四区 | 色丁香婷婷综合久久 | 精品黄色在线观看 | 亚洲欧美综合精品久久成人 | 国产二区视频在线观看 | 狠狠干亚洲色图 | 日韩高清成人 | 久久国产综合 | 国产精品大屁股白浆一区 | 欧美一区二区三区成人 | 男女午夜免费视频 | 欧美做爰xxxⅹ性欧美大片 | 国产精品色婷婷99久久精品 | 色屁屁一区二区三区 | 久久久国产免费 | 亚洲奶汁xxxx哺乳期 | 亚洲激情在线视频 | 超碰人人擦 | 三上悠亚在线播放 | 1000部啪啪未满十八勿入超污 | 欧美少妇色图 | 亚洲国产丝袜 | 国产性按摩 | 国产日韩欧美一二三区 | 亚洲一区二区自偷自拍 | 污污视频网站在线免费观看 | 欧美精品一区在线观看 | 蜜臀av免费一区二区三区水牛 | 五月激情小说 | 亚洲精品国产一区 | 国产日韩一区二区三区在线观看 | 奇米影视第四色首页 | 一级黄色免费片 | 亚洲中文一区二区三区 | 中文字幕一区二区三区波野结 | 亚洲自拍中文字幕 | 另类尿喷潮videofree | 国产成人在线一区二区 | 成为性瘾网黄的yy对象后 | 黄色网页大全 | 欧美色呦呦 | 午夜视频大全 | 日本少妇xxxxxx | 在线观看免费高清 | 国产一区二区三区四区视频 | 99ri视频| 色伊伊| 黄瓜视频污在线观看 | 成人免费观看网站 | 久久99国产精品久久99 | 中文字幕欧美另类精品亚洲 | 国产又粗又猛又爽又黄的 | 欧美激情 一区 | 色先锋av资源 | 涩涩网站在线 | 日韩欧美国产激情 | 久久av综合 | 91呦呦| 亚洲欧洲日韩 | 艳妇乳肉豪妇荡乳av无码福利 | 久久久久人妻一区 | 日韩福利片在线观看 | 狠狠躁夜夜躁人人爽天天高潮 | av在线网址观看 | 欧美人妻一区二区三区 | 超碰影院在线 | 狠狠插av| 国内自拍真实伦在线观看 | 久久资源av | 男女搞黄网站 | 男生舔女生胸 | 成人一级黄色片 | 懂色av成人一区二区三区 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 男人的天堂va| 国产浮力影院 | 欧美视频网站 | 中文字幕亚洲高清 | 日韩欧美在线播放 | 超碰免费人人 | 亚洲骚| 国产综合久久久久 | wwwyoujizz日本| 精品一级少妇久久久久久久 | 国产一区二区三区四区五区在线 | 日韩第一视频 | 超碰超碰超碰超碰 | 日本少妇一区 | 污污视频网站免费观看 | 亚洲13p | いいなり北条麻妃av101 | 欧美剧场 | 韩国19主播内部福利vip | 日韩国产欧美精品 | 成人片片 | 国产在线免费 |