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

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

持有對象

2019-11-11 04:07:48
字體:
來源:轉載
供稿:網友

鏈表

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
奇米一区二区三区四区久久| 亲爱的老师9免费观看全集电视剧| 91在线精品播放| 亚洲欧美日韩图片| 久久久久久久久电影| 国产亚洲欧美aaaa| 欧美黄网免费在线观看| 国产日韩欧美视频在线| 亚洲综合中文字幕68页| 国产精品va在线播放我和闺蜜| 91欧美精品午夜性色福利在线| 亚洲国内精品视频| 中文字幕在线看视频国产欧美在线看完整| 中文字幕国产精品久久| 欧美激情精品久久久久久免费印度| 欧美亚洲第一区| 久久久成人的性感天堂| 性色av一区二区三区红粉影视| 国产精品视频免费在线| 久久免费视频网站| 亚洲伊人第一页| 国产精品久久久久久久久久| 国产精品成人久久久久| 久久久999国产| 精品久久久久久久久久| 亚洲免费视频一区二区| 一区二区三区天堂av| 欧美午夜美女看片| 最近2019中文字幕第三页视频| 欧美精品激情blacked18| 国产网站欧美日韩免费精品在线观看| 亚洲精品美女久久| 亚洲国产成人91精品| 一区二区三区久久精品| 久热精品视频在线观看一区| 欧美激情网站在线观看| 久久精品国产96久久久香蕉| 久久99久久99精品免观看粉嫩| 2019中文字幕免费视频| 国产精品第一区| 91在线网站视频| 日韩美女写真福利在线观看| 国产一区二区三区毛片| 在线成人激情黄色| 欧美福利视频在线| 亚洲人成77777在线观看网| 久久久电影免费观看完整版| 亚洲欧洲国产精品| 日韩一区二区福利| 国产一区二区黑人欧美xxxx| 亚洲美女在线观看| 欧美黑人一级爽快片淫片高清| 欧美日韩国产成人| 日韩在线观看成人| 欧美韩国理论所午夜片917电影| 日韩禁在线播放| 精品香蕉一区二区三区| 亚洲一区亚洲二区亚洲三区| 欧美在线一区二区三区四| 国产精品丝袜视频| 最新69国产成人精品视频免费| 日韩成人激情视频| 91免费在线视频网站| 韩国精品美女www爽爽爽视频| 国产成人精品日本亚洲| 97精品视频在线观看| 欧美成人黑人xx视频免费观看| 亚洲激情小视频| 国产一区二区三区中文| 国产小视频国产精品| 亚洲在线观看视频网站| 亚洲第一区第二区| 最近日韩中文字幕中文| 欧美亚洲一区在线| 美日韩精品免费视频| 欧美大学生性色视频| 一区二区在线视频| 国产97在线|亚洲| 亚洲二区在线播放视频| 亚洲人成在线观| 国产精品久久久久久久久粉嫩av| 色噜噜国产精品视频一区二区| 欧美国产激情18| 91免费综合在线| 萌白酱国产一区二区| 高清欧美性猛交xxxx| 欧美成人午夜激情在线| 亚洲精品国精品久久99热一| 欧美午夜精品在线| 精品香蕉在线观看视频一| 91高清免费视频| 国产精品久久久久久久久粉嫩av| 91视频-88av| 日韩视频免费大全中文字幕| 永久免费看mv网站入口亚洲| 欧美性视频网站| 欧美日韩亚洲视频| 97在线观看免费高清| 欧美一二三视频| 97超级碰在线看视频免费在线看| 97色在线视频观看| 91精品久久久久久久久久另类| www.色综合| 久久久久久久久国产精品| 97超级碰碰人国产在线观看| 国产精品久久久久免费a∨| 亚洲国产日韩精品在线| 中文字幕国产精品久久| 亚洲第一福利网站| 91在线网站视频| 亚洲激情第一页| 亚洲精品美女视频| 国产精品久久久久久久电影| 久久精品国产亚洲7777| 91久久国产婷婷一区二区| 国产精品∨欧美精品v日韩精品| 亚州精品天堂中文字幕| 欧美精品18videosex性欧美| 91丨九色丨国产在线| 日韩中文第一页| 蜜月aⅴ免费一区二区三区| 久久久久亚洲精品| 欧日韩不卡在线视频| 国产精品久久久91| 精品无人国产偷自产在线| 欧美日韩国产一区中文午夜| 亚洲乱码av中文一区二区| 揄拍成人国产精品视频| 亚洲人成在线免费观看| 亚洲专区在线视频| 久久精品视频网站| 亚洲成人av在线播放| 日韩成人在线视频观看| 有码中文亚洲精品| 亚洲精品中文字幕女同| 久久精品视频在线| 日韩在线中文字| 91av视频导航| 久久精品久久久久久国产 免费| 成人欧美一区二区三区黑人孕妇| 欧美高清视频一区二区| 欧美精品videossex性护士| 国产精品99免视看9| 欧美华人在线视频| 国产精品情侣自拍| 亚洲黄色片网站| 麻豆成人在线看| 欧美资源在线观看| 国产亚洲aⅴaaaaaa毛片| 国产欧美一区二区三区久久人妖| 视频在线观看99| 中文字幕精品www乱入免费视频| 日韩动漫免费观看电视剧高清| 日产日韩在线亚洲欧美| 一本一本久久a久久精品牛牛影视| 色偷偷91综合久久噜噜| 91在线网站视频| 亚洲欧美中文在线视频| 日韩精品一二三四区| 欧美亚洲另类视频| 国产精品美女主播| 久久九九亚洲综合| 国产精品jvid在线观看蜜臀| 日韩高清av一区二区三区|