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

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

持有對象

2019-11-11 03:37:00
字體:
來源:轉載
供稿:網友

鏈表

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
欧美一级高清免费播放| 国模精品视频一区二区三区| 国产精自产拍久久久久久蜜| 久久久久在线观看| 精品毛片网大全| 欧美性xxxxx极品娇小| 久久久av免费| 日韩欧美在线国产| 国产精品v日韩精品| 欧美午夜激情视频| 亚洲伊人久久综合| 亚洲伊人一本大道中文字幕| 欧美理论电影在线播放| 日韩av在线免费播放| 中国日韩欧美久久久久久久久| 欧美一区二区三区四区在线| 91精品国产自产在线老师啪| 精品女同一区二区三区在线播放| 欧美激情国内偷拍| 欧美精品videossex88| 91精品国产777在线观看| 欧美大片免费看| 日韩国产在线播放| 日韩美女主播视频| 国产精品福利在线观看网址| 国产69久久精品成人看| 日韩高清免费在线| 国产精品女主播视频| 九九热这里只有精品免费看| 国产成人拍精品视频午夜网站| 亚洲天堂成人在线| 91久久精品视频| 亚洲欧美日韩爽爽影院| 91精品在线影院| 久久精品国产欧美激情| 91社区国产高清| 精品久久久久久国产91| 精品福利免费观看| 久久久av一区| 国产主播精品在线| 日韩免费观看av| 国产精品老女人视频| 国产精品网红福利| 成人欧美在线观看| 日韩电视剧在线观看免费网站| 国产精品第七十二页| 国产精品一二三视频| 亚洲欧美日韩一区二区三区在线| www.久久草.com| 日本一区二区三区四区视频| 久久免费视频观看| 九九热精品视频在线播放| 亚洲国产精品字幕| 久久精品国产久精国产思思| 国产精品入口免费视频一| 日韩欧美成人网| 亚洲性线免费观看视频成熟| 精品香蕉一区二区三区| 精品国产91久久久| 欧美日韩人人澡狠狠躁视频| 最近中文字幕2019免费| 久久99久久99精品免观看粉嫩| 久久久av一区| 国产成人精品免高潮在线观看| 久久精品男人天堂| 欧美精品久久一区二区| 国产精品成人久久久久| 久久精品精品电影网| 久久久精品网站| 亚洲成人免费在线视频| 久久久久久国产三级电影| 亚洲一区第一页| 国产日韩欧美自拍| 日韩在线视频线视频免费网站| 91精品国产综合久久香蕉最新版| 欧美成人免费视频| 国产中文日韩欧美| 92看片淫黄大片欧美看国产片| 欧美精品一区二区免费| 国模精品一区二区三区色天香| 国产精品永久免费观看| 一区二区三区亚洲| 日本最新高清不卡中文字幕| 91在线免费观看网站| 久久久国产在线视频| 亚洲成人中文字幕| zzjj国产精品一区二区| 国产精品视频久| 日韩亚洲欧美中文在线| 国产乱肥老妇国产一区二| 欧美一区二区三区免费视| 欧美日韩国产专区| 亚洲专区中文字幕| 91情侣偷在线精品国产| 成人黄色中文字幕| 在线播放国产一区中文字幕剧情欧美| 久久精品国产久精国产思思| 欧美日韩成人网| 97久久精品视频| 91av在线免费观看| 日韩毛片在线看| 欧美最顶级的aⅴ艳星| 97热精品视频官网| 亚洲国产精品一区二区久| 亚洲第一黄色网| 成人午夜在线视频一区| 国产成+人+综合+亚洲欧美丁香花| 久久久久久香蕉网| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品成人久久电影| 91免费看视频.| 精品福利一区二区| 日韩欧美在线视频| 国产日韩欧美影视| 国产91在线播放| 国产精品一二三在线| 欧美夫妻性生活xx| 96pao国产成视频永久免费| 日韩在线观看免费全集电视剧网站| 在线观看91久久久久久| 日韩免费在线免费观看| 中文字幕在线看视频国产欧美在线看完整| 欧美国产日韩一区| 中文字幕在线观看日韩| 欧美成人高清视频| 97av在线视频| 亚洲成人久久一区| 欧美国产日韩中文字幕在线| 亚洲久久久久久久久久久| 中文字幕国产亚洲2019| 国产欧美一区二区三区久久| 最近2019中文免费高清视频观看www99| 人人爽久久涩噜噜噜网站| 欧美老女人www| 成人中文字幕在线观看| 亚洲成成品网站| 最近2019中文免费高清视频观看www99| 日韩精品有码在线观看| 狠狠色噜噜狠狠狠狠97| 亚洲美腿欧美激情另类| 欧美成人精品三级在线观看| 国产suv精品一区二区三区88区| 亚洲激情视频在线播放| 午夜精品一区二区三区av| 国产精品永久免费观看| 欧美精品在线播放| 欧美电影在线观看完整版| 欧美激情18p| 成人网中文字幕| 91欧美日韩一区| 亚洲国产欧美自拍| 欧美多人爱爱视频网站| 自拍偷拍免费精品| 日韩视频免费大全中文字幕| 在线看福利67194| 欧美性xxxxx极品娇小| 在线精品国产欧美| 亚洲国内精品视频| 在线观看免费高清视频97| 亚洲开心激情网| 久久精品免费播放| 在线观看91久久久久久| 欧美性xxxxxxxxx| 九九精品在线播放|