<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # JAVA之旅(十九)——ListIterator列表迭代器,List的三個子類對象,Vector的枚舉,LinkedList,ArrayList和LinkedList的小練習 * * * > 關于數據結構,所講的知識太多了,我們只能慢慢的來分析了 ## 一.ListIterator列表迭代器 > ListIterator列表迭代器是個什么鬼?我們通過一個小例子來認識他 ~~~ package com.lgl.hellojava; import java.util.ArrayList; import java.util.Iterator; import javax.print.attribute.standard.MediaSize.Other; //公共的 類 類名 public class HelloJJAVA { public static void main(String[] args) { listiterator(); } /** * 演示列表迭代器 */ public static void listiterator() { /** * 需求:對集合中的元素取出,在取的過程中進行操作 */ ArrayList al = new ArrayList<>(); al.add("hello 01"); al.add("hello 02"); al.add("hello 03"); al.add("hello 04"); // 在迭代過程中,準備添加或者刪除元素 Iterator it = al.iterator(); while (it.hasNext()) { Object obj = it.next(); if (obj.equals("hello 02")) { // 將這個元素刪除 al.add("hello 05"); sop(obj); } } } /** * 輸出 */ public static void sop(Object obj) { System.out.println(obj); } } ~~~ > 我們用老方法的思路去做我們的需求,是這樣的,你運行后悔發現 ![這里寫圖片描述](http://img.blog.csdn.net/20160621220228450) > 他打印了02缺報異常了,我們于是要去查看API ![這里寫圖片描述](http://img.blog.csdn.net/20160621220408546) > 他不清楚怎么去操作,這也是這個迭代器的缺陷 * list集合特有的迭代器叫做ListIterator,是Iterator的子接口,在迭代時,不可以通過集合對象的方法操作集合中的元素,因為會發現并發修改異常,所以,在迭代器時,只能用迭代器的方式操作元素,可是Iterator方法有限,如果想要其他的操作如添加,修改等,就需要使用其子接口:ListIterator,該接口只能通過list集合的ListIterator方法獲取 > 所以我們可以這樣去修改 ~~~ package com.lgl.hellojava; import java.util.ArrayList; import java.util.Iterator; import java.util.ListIterator; //公共的 類 類名 public class HelloJJAVA { public static void main(String[] args) { listiterator(); } /** * 演示列表迭代器 */ public static void listiterator() { /** * 需求:對集合中的元素取出,在取的過程中進行操作 */ ArrayList al = new ArrayList<>(); al.add("hello 01"); al.add("hello 02"); al.add("hello 03"); al.add("hello 04"); sop(al); ListIterator li = al.listIterator(); while (li.hasNext()) { Object object = li.next(); if (object.equals("hello 03")) { li.add("lgl"); } } sop(al); // 在迭代過程中,準備添加或者刪除元素 // Iterator it = al.iterator(); // while (it.hasNext()) { // Object obj = it.next(); // // if (obj.equals("hello 02")) { // // 將這個元素刪除 // // al.add("hello 05"); // it.remove(); // sop(obj); // } // sop(al); // } } /** * 輸出 */ public static void sop(Object obj) { System.out.println(obj); } } ~~~ > 不僅可以增加,還可以修改,刪除等操作 ![這里寫圖片描述](http://img.blog.csdn.net/20160621222847376) ## 二.List的三個子類對象 > List有三個子類對象 * ArrayList * LinkedList * Vector > 為什么會有三個?因為底層的數據結構不一樣,那具體是怎么樣的呢? * ArrayList? * 底層的數據結構使用的是數組結構,特點:查詢速度很快,但是增刪稍慢,元素不多的話,你體會不到的。線程不同步。 * LinkedList? * 底層使用的鏈表數據結構,特點:增刪的速度很快,查詢的速度慢。 * Vector? * 底層是數組數據結構,線程同步。做什么都慢,被ArrayList替代了 > ArrayList和Vector都是數組結構,他們有什么具體的區別呢? * ArrayList構造一個初始容量為10的空列表,當長度超過10之后增加50%,而后者,長度也為10,超過的話,是100%延長至20,比較浪費空間 ## 三.Vector的枚舉 > 上面說了這么多,雖然Vector不用,但是我們還是要熟悉一下,面試的時候也是會問到的,所以我們寫個小例子 ~~~ package com.lgl.hellojava; import java.util.Enumeration; import java.util.Vector; //公共的 類 類名 public class HelloJJAVA { public static void main(String[] args) { Vector v = new Vector(); v.add("hello 01"); v.add("hello 02"); v.add("hello 03"); v.add("hello 04"); // 返回枚舉 Enumeration elements = v.elements(); while (elements.hasMoreElements()) { sop(elements.nextElement()); } } /** * 輸出 */ public static void sop(Object obj) { System.out.println(obj); } } ~~~ > 這樣就輸出了? > 枚舉就是Vector特有的取出方式,我們發現枚舉和迭代器很像,其實枚舉和迭代時一樣的,因為枚舉的名稱以及方法的名稱都過長,所以被迭代器所取代了。枚舉就郁郁而終了 ## 四.LinkedList > 我們繼續來說list的子類對象LinkedList,事實上區別都不是很大,所以我們只說一些特有的特點 > > LinkedList特有方法: * addFirst() * addLast(); * getFirst(); * getLast(); * removeFirst(); * removeLast(); > 我們來看 ~~~ package com.lgl.hellojava; import java.util.LinkedList; //公共的 類 類名 public class HelloJJAVA { public static void main(String[] args) { LinkedList list = new LinkedList<>(); list.addFirst("hello 0"); list.addFirst("hello 1"); list.addFirst("hello 2"); list.addFirst("hello 3"); sop(list); } /** * 輸出 */ public static void sop(Object obj) { System.out.println(obj); } } ~~~ > 輸出的結果 ![這里寫圖片描述](http://img.blog.csdn.net/20160622220756761) > 我們一直添加頭部,就是倒序了,這個邏輯應該都知道吧!要是addLast(),那就是順序了,我們要想知道他們的頭部和尾部的數值,也就直接get就是了 ~~~ sop(list.getFirst()); sop(list.getLast()); ~~~ > 獲取元素,但是元素被刪除,如果集合中沒有元素,會出異常,在JDK1.6版本后出現了替代方法 * offerFirst(); * offerLast(); * peekFirst(); * peekLast(); * pollFist(); * pollLast();? > 之類的 ## 五.小練習 > 我們寫個小練習吧,我們先看LinkedList ~~~ package com.lgl.hellojava; import java.util.LinkedList; //公共的 類 類名 public class HelloJJAVA { public static void main(String[] args) { /** * 使用LinkedList模擬一個堆棧或者隊列數據模式 堆棧:現進后出 隊列:先進先出 */ DuiLie dl = new DuiLie(); dl.MyAdd("hello 01"); dl.MyAdd("hello 02"); dl.MyAdd("hello 03"); dl.MyAdd("hello 04"); while (!dl.isNull()) { sop(dl.myGet()); } } /** * 輸出 */ public static void sop(Object obj) { System.out.println(obj); } } /** * 隊列 * * @author LGL * */ class DuiLie { private LinkedList link; public DuiLie() { link = new LinkedList<>(); } public void MyAdd(Object obj) { link.addFirst(obj); } public Object myGet() { return link.removeLast(); } public boolean isNull() { return link.isEmpty(); } } ~~~ > 自己寫的一個鏈表,去使用它,這樣輸出的結果就是 ![這里寫圖片描述](http://img.blog.csdn.net/20160622224908384) > OK,那我們繼續,寫一個ArrayList的小例子 ~~~ package com.lgl.hellojava; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; //公共的 類 類名 public class HelloJJAVA { public static void main(String[] args) { /** * 去除ArrayList的重復元素 */ ArrayList list = new ArrayList<>(); list.add("Hello 01"); list.add("Hello 02"); list.add("Hello 03"); list.add("Hello 02"); list.add("Hello 05"); sop(list); list = Method(list); sop(list); } public static ArrayList Method(ArrayList list){ //臨時容器 ArrayList newList = new ArrayList<>(); Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object object = (Object) iterator.next(); if(!newList.contains(object)){ newList.add(object); } } return newList; } /** * 輸出 */ public static void sop(Object obj) { System.out.println(obj); } } ~~~ > 輸出的結果 ![這里寫圖片描述](http://img.blog.csdn.net/20160622230216952) > 好的,我們本篇幅到這里,就寫完了,但是我們的數據結構只是講了一些皮毛而已,我們接下來的幾天,將會一一為大家講解 ## 我的群:555974449 版權聲明:本文為博主原創文章,博客地址:http://blog.csdn.net/qq_26787115,未經博主允許不得轉載。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看