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

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

持有對象

2019-11-11 05:37:29
字體:
來源:轉載
供稿:網友

鏈表

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
久久中文字幕在线| 日韩亚洲第一页| 日韩电影中文字幕在线观看| 欧美大片免费观看在线观看网站推荐| 91亚洲精品视频| 91久久嫩草影院一区二区| 国模吧一区二区三区| 国产精品美腿一区在线看| 日韩中文在线不卡| 国产中文字幕亚洲| 91色在线视频| 这里只有精品久久| 97在线视频观看| 国产剧情久久久久久| 国产精品ⅴa在线观看h| 国产精品亚洲аv天堂网| 国产在线98福利播放视频| 久久综合免费视频影院| 国产精品美女在线观看| 啪一啪鲁一鲁2019在线视频| 狠狠色狠色综合曰曰| 疯狂欧美牲乱大交777| 日韩福利伦理影院免费| 亚洲精品成人久久久| 国产精品久久久久久久久免费看| 欧美激情在线观看视频| 欧美视频中文字幕在线| 欧洲亚洲免费视频| 国产精品久久网| 精品高清一区二区三区| 色综合久久天天综线观看| 亚洲欧美中文日韩在线v日本| 欧美激情视频在线免费观看 欧美视频免费一| 日韩欧美国产高清91| 欧美日韩亚洲一区二区三区| 欧美日韩免费区域视频在线观看| 国产精品网站入口| 亚洲乱码一区二区| 欧美巨猛xxxx猛交黑人97人| 欧美日韩国产123| 日本精品久久电影| 欧美黑人xxxⅹ高潮交| 日韩电影视频免费| x99av成人免费| 日韩av中文字幕在线免费观看| 中文日韩在线视频| 欧美精品激情视频| 成人网页在线免费观看| 欧美电影电视剧在线观看| 亚洲第一区中文字幕| 午夜精品一区二区三区在线播放| 热久久这里只有精品| 精品久久在线播放| 亚洲精品在线观看www| 国产日韩在线看片| 久久精品亚洲一区| 91精品综合久久久久久五月天| 日韩成人小视频| 日韩精品免费观看| 日韩在线播放视频| 91免费综合在线| 欧美成在线视频| 欧美成人午夜视频| 亚洲美女视频网| 91理论片午午论夜理片久久| 日韩一区二区av| 国产999在线观看| 亚洲综合第一页| 不卡毛片在线看| 亚洲天堂男人的天堂| 日韩国产一区三区| 亚洲第一天堂无码专区| 亚洲精品久久久久中文字幕二区| 国产精品1区2区在线观看| 中文字幕在线看视频国产欧美| 欧美电影在线观看| 亚洲午夜国产成人av电影男同| 狠狠色噜噜狠狠狠狠97| 中文字幕日韩av| 亚洲福利影片在线| 庆余年2免费日韩剧观看大牛| 亚洲精品ady| 久久久精品一区| 成人情趣片在线观看免费| 国产精品精品视频一区二区三区| 欧美日韩人人澡狠狠躁视频| 精品久久久久久电影| 亚洲风情亚aⅴ在线发布| 91精品啪在线观看麻豆免费| 国产亚洲福利一区| 福利微拍一区二区| 久久精品国产v日韩v亚洲| 伊人精品在线观看| 日韩av网站大全| xxav国产精品美女主播| 国产美女扒开尿口久久久| 国语自产在线不卡| 国产经典一区二区| 欧美高清视频在线播放| 国产精品草莓在线免费观看| 日韩精品在线视频| 亚洲色图第三页| 国产精品成人一区二区三区吃奶| 精品色蜜蜜精品视频在线观看| 成人性生交大片免费看视频直播| 国产精品美女呻吟| 国产一区二区免费| 欧美极品美女视频网站在线观看免费| 亚洲激情免费观看| 欧美日韩ab片| 日韩激情片免费| 亚洲一区二区三区四区视频| 国产精品久久久久久久app| 欧美一级黑人aaaaaaa做受| 成人精品视频在线| 91精品视频专区| 欧美性猛交xxxx乱大交蜜桃| 欧美野外猛男的大粗鳮| 亚洲视频在线视频| 亚洲美腿欧美激情另类| 亚洲四色影视在线观看| 96精品久久久久中文字幕| 日韩欧美在线字幕| 国内精品模特av私拍在线观看| 国产成人精品综合久久久| 久久久www成人免费精品| 国产精品一区二区久久| 久久久久久久999精品视频| 高清欧美电影在线| 国产欧美日韩精品在线观看| 亚洲影院色在线观看免费| 欧美极度另类性三渗透| 国产精品久久久久免费a∨大胸| 欧美大成色www永久网站婷| 日韩中文视频免费在线观看| 黑人巨大精品欧美一区二区| 久久亚洲精品视频| 午夜精品在线观看| 黑人与娇小精品av专区| 亚洲最大成人网色| 亚洲欧美日韩久久久久久| 欧美限制级电影在线观看| 欧美重口另类videos人妖| 欧美日韩中文在线观看| 国产精品高清在线| 久久视频免费观看| 国产精品69久久久久| 国产午夜精品理论片a级探花| 国产91露脸中文字幕在线| 91网站在线看| 精品在线观看国产| 中文字幕亚洲综合久久筱田步美| 亚洲国产99精品国自产| 精品视频在线观看日韩| 久久久日本电影| 国产91成人video| 久久激情视频久久| 久久久久久久一区二区| 久久这里只有精品99| 国内精品久久久久影院 日本资源| 国外色69视频在线观看| 欧美电影免费观看网站| 亚洲激情第一页| 国产精品白嫩美女在线观看|