亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

持有對象

2019-11-11 04:08:46
字體:
來源:轉載
供稿:網友

鏈表

arrayList:隨機訪問性能好,插入和刪除效率差LinkedList:插入和刪除效率高,隨機訪問性能差

初始化

// 1.使用 Arrays.asList 將數組轉化為容器進行初始化,速度最慢List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1,2,3));// 2.使用 Collection.addAll() 進行初始化,速度比第一種方案快,但是只能接受容器作為參數List<Integer> list2 = new ArrayList<Integer>();list2.addAll(list1);// 3. 使用 Collections.addAll() 進行初始化,速度最快且參數靈活,首選方案List<Integer> list3 = new ArrayList<Integer>();Collections.addAll(list3,1,2,3);// Array.asList() 與 Collections.addAll() 都是可變參數列表,但是他們有一些區別List<Snow> snow1 = Arrays.asList(new Powder(),new Crusty(),new Slush());// 這樣創建編譯器會報錯, 方法無法得到要創建的鏈表的類型信息//List<Snow> snow2 = Arrays.asList(new Powder(),new Light(),new Heavy());List<Snow> snow3 = new ArrayList<Snow>();// 方法從第一個參數獲取類型信息Collections.addAll(snow3,new Powder(),new Crusty(),new Slush());class Snow {}class Powder extends Snow {}class Light extends Powder {}class Heavy extends Powder {}class Crusty extends Snow {}class Slush extends Snow {}

打印

// 對于數組打印需要使用 Array.toString() 但是容器可以直接打印System.out.PRintln(Arrays.toString(new Integer[]{1,2,3}));System.out.println(list1);

鏈表常用方法

ArrayList<String> arrayList = new ArrayList<String>();arrayList.isEmpty();arrayList.contains("red");arrayList.containsAll(Arrays.asList("red","black"));arrayList.addAll(Arrays.asList("red","blue","green","white","yellow","grey"));arrayList.add("black");//在當前位置插入即 2arrayList.add(2,"pink");arrayList.get(2);arrayList.set(2,"red");arrayList.remove(4);//刪除出現的第一個arrayList.remove("red");arrayList.add("red");arrayList.add("red");// 遍歷,所有的都刪除arrayList.removeAll(Arrays.asList("red","blue"));arrayList.indexOf("red");arrayList.lastIndexOf("red");List<String> subList = arrayList.subList(1,3);System.out.println(subList);System.out.println(subList.indexOf("yellow"));// 對 subList 的修改會作用到原鏈表subList.add("golden");System.out.println(arrayList);subList.clear();System.out.println(arrayList);

LinkedList 除了與 ArrayList 提供的鏈表常用的方法之外,還提供了對棧,隊列,以及雙端隊列的支持。所以 LinkedList 的方法比 ArrayList 豐富,并且將 LinkedList 向上轉型為 List 時,這些這棧,隊列,雙端隊列支持的方法也將不能使用。

隊列

Queue 接口 繼承了 Collection 接口,并在 COllection 接口的基礎上擴展了對容器元素的插入,提取,以及檢查操作。每種操作都提供了兩種不同的方法,當相應的操作失敗時,一種拋出異常而另一種返回一個特殊值(null 或者 false)。插入失敗的接口設計針對的是容量大小有限制的隊列,一般情況下不會失敗。

拋出異常 返回特殊值
add(e) offer(e)
remove() poll()
element() peek()

在隊列的使用中,不應該插入 null 值,盡管它的實現 LinkedList 允許插入,但是也不應該這樣做,應為隊列 poll() 使用 null 作為隊列為空的標志。

雙端隊列(double ended queue)

拋出異常 返回特殊值
addFirst(e)/addLast(e) offerFirst(e)/offerLast(e)
removeFirst()/removeLast() pollFirst()/pollLast()
getFirst()/getLast() peekFirst()/peekLast()

queue和deque 方法對比

queue deque
add(e) addFirst(e)
offer(e) offerFirst(e)
remove() removeFirst()
poll() pollFirst()
element() getFirst()
peek() peekFirst()

雙端隊列的接口設計時提供了對棧的支持,即可以將雙端隊列作為棧來操作。而這種用法要優于舊的 Stack 類。

stack deque
push(e) addFirst(e)
pop() removeFirst()
peek() peekFirst()

優先隊列

在優先隊列上調用 offer() 方法插入對象時,這個對象在隊列內會被排序。自己定義的類需要實現 comparable 或者提供自動的比較器。

Set

HashSetTreeSetLinkedHashSet

Map

HashMapTreeMapLinkedHashMap

Collection,Iterator,Iterable

Collection 和 Iterator 提供了面向接口而不是具體實現的編程方式。除 Map 以外其他的容器都實現了Collection 接口,而所有的 Collection 都有一個返回 Iterator 的方法。public static <T> void display(Collection<T> collection){ for(T obj : collection){ System.out.print(obj + " "); } System.out.println();}public static <T> void display(Iterator<T> iterator){ while(iterator.hasNext()){ T obj = iterator.next(); System.out.print(obj + " "); } System.out.println();}public static void main(String[] args){ String[] array = new String[]{"red","blue","black","red"}; List<String> linkedList = new LinkedList<String>(Arrays.asList(array)); Set<String> hashSet = new HashSet<String>(Arrays.asList(array)); CollectionTest.display(linkedList); CollectionTest.display(hashSet); CollectionTest.display(linkedList.iterator()); CollectionTest.display(hashSet.iterator());}

Map 通過 keySet(),values() 可以返回 COllection ,從而與 Collection 建立聯系。

Collection 可以直接使用 foreach 語法,但是 Iterator 不能。但是兩者各有優缺點。Collection 接口可以通過繼承 AbstractColleciton 類因此有多繼承的限制,而使用 Iterator 只需要在類定義一個返回該接口實例的方法。

public class MyCollection extends AbstractCollection<String> { private String[] array; public MyCollection(){ super(); array = new String[]{"red","blue","black"}; } public Iterator<String> iterator() { return new Iterator<String>() { private int index = 0; public boolean hasNext() { return index < size(); } public String next() { return array[index++]; } }; } public int size() { return array.length; } public static void main(String[] args){ MyCollection myCollection = new MyCollection(); CollectionTest.display(myCollection); }}public class MyCollection { private String[] array; public MyCollection(){ super(); array = new String[]{"red","blue","black"}; } public Iterator<String> iterator() { return new Iterator<String>() { private int index = 0; public boolean hasNext() { return index < size(); } public String next() { return array[index++]; } }; } public int size() { return array.length; } public static void main(String[] args){ MyCollection myCollection = new MyCollection(); CollectionTest.display(myCollection.iterator()); }}Iterable 是 java SE5 之后添加的新接口,任何實現該接口的類都可以使用 foreach 語句,Colleciton 接口繼承了 Iterable 接口。但是數組雖然可以使用 foreach,但是數組并沒有實現 Iterable 接口。public class MyCollection implements Iterable<String> { private String[] array; public MyCollection(){ super(); array = new String[]{"red","blue","black"}; } public Iterator<String> iterator() { return new Iterator<String>() { private int index = 0; public boolean hasNext() { return index < size(); } public String next() { return array[index++]; } }; } public int size() { return array.length; } public static void main(String[] args){ MyCollection myCollection = new MyCollection(); for(String color : myCollection){ System.out.print(color + " "); } }}使用適配器模式顯式的調用 foreach 語法。

通過上面的例子可以知道,當需要支持 foreach 語法時可以實現 Iterable 接口。但是假設我們希望有多個不同方式來進行迭代,這時可以采用適配器模式。

public Iterable<String> reversed(){ return new Iterable<String>() { public Iterator<String> iterator() { return new Iterator<String>() { private int i = size(); public boolean hasNext() { return i > 0; } public String next() { return array[--i]; } }; } };}MyCollection myCollection = new MyCollection();for(String color : myCollection){ System.out.print(color + " ");}System.out.println();for(String color : myCollection.reversed()){ System.out.print(color + " ");}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品一区二区三区| 国产欧美日韩免费看aⅴ视频| 亚洲国产高清福利视频| 亚洲aⅴ日韩av电影在线观看| 国产精品亚洲精品| 国产日韩在线观看av| 上原亚衣av一区二区三区| 午夜免费日韩视频| 亚洲香蕉在线观看| 日韩av在线天堂网| 亚洲一区二区少妇| 亚洲va欧美va国产综合久久| 亚洲欧美视频在线| 在线播放日韩专区| 国产成人精品综合久久久| 久久久免费观看| 亚洲精品97久久| 一本大道亚洲视频| 久久久久久久久91| 黑人与娇小精品av专区| 久久九九免费视频| 国产成人精品久久二区二区| 精品国产精品三级精品av网址| 日韩电影免费观看中文字幕| 精品伊人久久97| 欧美综合国产精品久久丁香| 亚洲精品成人免费| 欧美性做爰毛片| 91视频免费网站| 欧美日韩一区二区免费视频| 少妇av一区二区三区| 97视频人免费观看| 成人免费自拍视频| 久久国产精品99国产精| 久久精品国产精品亚洲| 欧美日韩国产中文精品字幕自在自线| 久久色免费在线视频| 日韩在线视频播放| 精品亚洲aⅴ在线观看| 国产一区二区三区精品久久久| 精品久久久久久久中文字幕| 97色在线观看免费视频| 国产丝袜高跟一区| 日韩专区在线播放| 国产成人aa精品一区在线播放| 精品无人国产偷自产在线| 亚洲国产精品大全| 日韩成人久久久| 日韩av在线免费播放| 91午夜理伦私人影院| 久久亚洲精品一区| 欧美性猛交xxxx黑人| 久久精品99无色码中文字幕| 日韩精品小视频| 亚洲mm色国产网站| 欧美成人激情视频| www.欧美免费| 亚洲国产天堂久久国产91| 日韩精品在线观看视频| 色偷偷av一区二区三区乱| 国产精品视频网址| 欧美日韩第一视频| 亚洲天堂免费在线| 久久国产精品久久久久久久久久| 亚洲综合小说区| 九九九久久国产免费| 国产99视频精品免视看7| 亚洲日本aⅴ片在线观看香蕉| 欧美一区二区三区免费观看| 亚洲日韩欧美视频| 国产精品视频xxxx| 国产精品手机播放| 亚洲美女久久久| 国产成人综合精品| 国语自产精品视频在线看抢先版图片| 国产成人高清激情视频在线观看| 色系列之999| 欧美日韩一区二区精品| 国产亚洲视频在线| 欧美重口另类videos人妖| 日韩中文字幕视频在线观看| 亚洲成人精品久久久| 国产成人精品免高潮费视频| 久久精品国产亚洲精品2020| 亚洲free性xxxx护士白浆| 日韩电影免费在线观看中文字幕| 日韩av毛片网| 日韩在线视频免费观看高清中文| 欧美大片va欧美在线播放| 国产精品2018| 日韩欧美成人区| 中文字幕在线看视频国产欧美在线看完整| 亚洲乱码国产乱码精品精天堂| 亚洲欧洲国产精品| 欧美久久精品午夜青青大伊人| 8x海外华人永久免费日韩内陆视频| 欧美日韩精品在线| 国产精品日日摸夜夜添夜夜av| 日韩美女主播视频| 欧美日韩在线免费观看| 精品国产欧美一区二区三区成人| 97免费视频在线| 久久五月天综合| 色99之美女主播在线视频| 亚洲国产精品久久91精品| 少妇精69xxtheporn| 欧美日韩国产成人高清视频| 亚洲国产欧美久久| 久久国产精品久久久久久久久久| 国产精品a久久久久久| 国产视频久久久| 国产成人拍精品视频午夜网站| 伊人一区二区三区久久精品| 国产日韩在线亚洲字幕中文| 久久九九全国免费精品观看| 亚洲精品福利视频| 麻豆国产精品va在线观看不卡| 国内伊人久久久久久网站视频| 亚洲视频网站在线观看| 5566日本婷婷色中文字幕97| 久久久久久尹人网香蕉| 欧美日韩一区免费| 日本伊人精品一区二区三区介绍| 日韩av资源在线播放| 国产精品久久久久久久久久99| 性欧美在线看片a免费观看| 精品性高朝久久久久久久| 亚洲va欧美va国产综合剧情| 久久91超碰青草是什么| 正在播放欧美视频| 久久99久久99精品免观看粉嫩| 亚洲va欧美va在线观看| 欧美综合第一页| 久久精品99久久久久久久久| 亚洲精品色婷婷福利天堂| 色综合视频网站| 欧美在线视频一区| 欧美激情精品在线| 91福利视频在线观看| 日日骚av一区| 在线电影中文日韩| 午夜精品久久17c| 国产一区二区三区日韩欧美| 精品欧美一区二区三区| 亚洲福利在线播放| 亚洲男人天天操| 亚洲区免费影片| 日韩精品一区二区视频| 亚洲va欧美va国产综合剧情| 精品亚洲夜色av98在线观看| 国产精品久久久久久久久久久久久久| 国内精品久久影院| 欧美日韩裸体免费视频| 亚洲欧美国产一区二区三区| 国产一区二区三区毛片| 久久深夜福利免费观看| 欧美午夜片在线免费观看| 亚洲综合社区网| 欧美精品在线第一页| 国产精品视频播放| 日本三级韩国三级久久| 亚洲福利视频专区| 91wwwcom在线观看| 日本高清+成人网在线观看|