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

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

持有對象

2019-11-11 04:49:34
字體:
來源:轉載
供稿:網友

鏈表

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
国产精品免费视频xxxx| 97avcom| 欧美又大又硬又粗bbbbb| 欧美乱大交做爰xxxⅹ性3| 日韩成人av网| 久久精品国产69国产精品亚洲| 51色欧美片视频在线观看| 国产亚洲欧洲高清一区| 国产精品日韩精品| 国产一区二区三区在线| 亚洲毛片在线看| 亚洲最大福利视频网站| 91精品国产综合久久男男| xxxx欧美18另类的高清| 一区二区在线视频| 亚洲一区二区三区毛片| 疯狂蹂躏欧美一区二区精品| 久久91精品国产91久久久| 91国偷自产一区二区三区的观看方式| 亚洲人成电影网站色www| 久久久久久久久久婷婷| 亚洲人成伊人成综合网久久久| 国产精品久久久久久久久久99| 欧美激情精品久久久久久免费印度| 精品综合久久久久久97| 日本中文字幕成人| 国产69精品久久久| 国产精品第100页| 国产精品网站入口| 性日韩欧美在线视频| 国产精品直播网红| 4444欧美成人kkkk| 4k岛国日韩精品**专区| 亚洲国产中文字幕在线观看| 国产精品成人va在线观看| 在线看欧美日韩| 日本不卡免费高清视频| 欧美性猛交丰臀xxxxx网站| 欧洲成人午夜免费大片| 国产成人精品最新| 伊人久久久久久久久久久久久| 欧美午夜视频一区二区| 亚洲人成在线电影| 欧美性资源免费| 亚洲成人久久久久| 亚洲精品乱码久久久久久按摩观| 国产精品青青在线观看爽香蕉| 亚洲精品在线视频| 久久久久久高潮国产精品视| 视频在线观看一区二区| 国产亚洲欧美日韩一区二区| 欧美色视频日本版| 国产成人精品一区二区三区| 午夜精品久久久久久久99热浪潮| 国产精品99久久99久久久二8| 亚洲精品一区av在线播放| 精品国内产的精品视频在线观看| 国产成人jvid在线播放| 成人情趣片在线观看免费| 国产91ⅴ在线精品免费观看| 懂色av一区二区三区| 亚洲国产成人精品久久| 久久亚洲精品网站| 在线观看精品国产视频| 夜色77av精品影院| 亚洲天堂男人天堂| 国产不卡视频在线| 亚洲欧美中文在线视频| 91九色国产社区在线观看| 国产精品日韩欧美| 亚洲天堂第二页| 国产美女久久久| 91嫩草在线视频| 成人精品一区二区三区电影免费| 亚洲欧洲视频在线| 欧美日韩中文字幕综合视频| 欧美性猛交xxxx免费看漫画| 欧美与黑人午夜性猛交久久久| 亚洲综合在线做性| 九九热r在线视频精品| 国语对白做受69| 97在线视频一区| 亚洲国内精品视频| 国模gogo一区二区大胆私拍| 4438全国成人免费| 国产日韩欧美视频| 欧美精品免费播放| 日韩黄色高清视频| 亚洲欧美福利视频| 亚洲级视频在线观看免费1级| 日韩在线观看视频免费| 7777精品视频| 成人激情视频在线| 亚洲成人久久网| 国产精品视频yy9099| 国产精品久久婷婷六月丁香| 精品国产精品自拍| 国产男人精品视频| 日韩视频免费大全中文字幕| 久久99精品久久久久久噜噜| 亚洲成av人影院在线观看| 亚洲福利在线视频| 亚洲成人av片在线观看| 亚洲一区二区三区视频播放| 欧美亚洲另类制服自拍| 国产精品久久中文| 亚洲а∨天堂久久精品喷水| 久久久国产在线视频| 亚洲第一精品久久忘忧草社区| 国产精品视频26uuu| 亚洲综合一区二区不卡| 国产日韩换脸av一区在线观看| 国产在线视频欧美| 欧美在线视频一区二区| 亚洲色图欧美制服丝袜另类第一页| 欧美综合激情网| 国产精品网红直播| 久久视频在线观看免费| 国产ts一区二区| www.欧美视频| 色综合久久精品亚洲国产| 另类天堂视频在线观看| 国产一区欧美二区三区| 欧美激情视频一区二区| 国产做受69高潮| 久久精品成人欧美大片| 亚洲人高潮女人毛茸茸| 欧美极品第一页| www.午夜精品| 久久精品国产一区| 国产精品av在线播放| 精品动漫一区二区三区| 亚洲精品在线视频| 91免费欧美精品| 91av视频在线| 国产亚洲成精品久久| 国产性猛交xxxx免费看久久| 久久久久久久久久久久久久久久久久av| 欧美做受高潮1| 成人夜晚看av| 精品国产一区二区三区久久久狼| 2019中文在线观看| 91豆花精品一区| 精品爽片免费看久久| 国产成人精品久久二区二区| 日韩亚洲精品电影| 亚洲视频专区在线| 久久韩剧网电视剧| 成人激情视频小说免费下载| 欧美一级黑人aaaaaaa做受| 福利视频导航一区| 久久99视频免费| 成人a视频在线观看| 久久精品国产亚洲精品| 另类色图亚洲色图| 日韩av在线导航| 国产精品黄页免费高清在线观看| 国产91色在线播放| 久久精品视频va| 日韩高清电影免费观看完整版| 亚洲国产日韩欧美在线动漫| 久久久久久噜噜噜久久久精品| 91精品久久久久久久久久另类| 少妇激情综合网|