成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

什么是集合輸出

這篇文章主要介紹“什么是集合輸出”,在日常操作中,相信很多人在什么是集合輸出問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是集合輸出”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)公司專注于石臺企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城建設。石臺網(wǎng)站建設公司,為石臺等地區(qū)提供建站服務。全流程按需制作網(wǎng)站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務

集合輸出

集合輸出實際上從JDK1.8開始就在Iterable接口中提供了一個forEach()方法,但是這種方法輸出并不是傳統(tǒng)意義上集合輸出形式,并且也很難在實際的開發(fā)之中出現(xiàn),對于集合操作而言,一共有四種輸出形式:Iterator迭代輸出(95%)、ListIterator雙向迭代輸出(0.1%)、Enumeration枚舉輸出(4.9%)、foreach輸出(與Iterator相當)。

Iterator迭代輸出

通過Collection接口的繼承關系可以發(fā)現(xiàn),從JDK1.5開始其多繼承了一個Iterable父接口,并且在這個接口里面定義有一個iterator()操作方法,通過此方法可以獲取Iterator接口對象(在JDK1.5之前,這一方法直接定義在Collection接口之中)。

獲取Iterator接口對象:public Iterator<T> iterator();

在Iterator接口里面定義有如下的方法:

No.方法名稱類型描述
01public boolean hasNext()普通判斷是否有數(shù)據(jù)
02public E next()普通取出當前數(shù)據(jù)
03default void remove()普通刪除

在之前使用的java.util.Scanner類就是Iterator接口的子類,所以此時類繼承關系如下:

什么是集合輸出
Iterator接口

范例:使用Iterator輸出

import java.util.Set;import java.util.Iterator;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {Set<String> all = Set.of("Hello", "World", "MLDN");Iterator<String> iter = all.iterator();   //實例化Iterator接口對象while (iter.hasNext()) {String str = iter.next();
            System.out.println(str);   // World Hello MLDN}
    }
}

但是對于Iterator接口中的remove()方法的使用需要特別注意一下(如果不是必須不要使用)。實際上在Collection接口中定義有數(shù)據(jù)的刪除操作方法,但是在進行迭代輸出的過程中如果你使用了Collection中的remove()方法會導致迭代失敗。
范例:采用Collection集合中remove()方法刪除

import java.util.Set;import java.util.Iterator;import java.util.HashSet;public class JavaAPIDemo {public static void main(String[] args) throws Exception {Set<String> all = new HashSet<String>();all.add("Hello");all.add("World");all.add("MLDN");
        Iterator<String> iter = all.iterator();   //實例化Iterator接口對象while (iter.hasNext()) {
            String str = iter.next();if ("World".equals(str)) {all.remove("World");  //Collection集合方法
            }else {System.out.println(str);   //  Hello   Exception in thread "main">

此時無法進行數(shù)據(jù)刪除處理操作,那么就只能夠利用Iterator接口中的remove()方法刪除。

范例:使用Iterator接口刪除方法

import java.util.Set;import java.util.Iterator;import java.util.HashSet;public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        Set<String> all = new HashSet<String>();
        all.add("Hello");
        all.add("World");
        all.add("MLDN");
        Iterator<String> iter = all.iterator();   //實例化Iterator接口對象while (iter.hasNext()) {String str = iter.next();if ("World".equals(str)) {
                iter.remove();  //Collection集合方法}else {
                System.out.println(str);   //  Hello   Exception in thread "main" java.util.ConcurrentModificationException}
        }
        System.out.println("*** "+ all);  
    }
}//Hello//MLDN//*** [Hello, MLDN]

此時程序執(zhí)行后沒有出現(xiàn)任何的錯誤,并且可以成功的刪除原始集合中的數(shù)據(jù)。
面試題:
請解釋Collection.remove()與Iterator.remove()的區(qū)別?
在進行迭代輸出的時候,如果使用了Collection.remove()則會造成并發(fā)更新的異常,導致程序刪除出錯,而此時只能夠利用Iterator接口中remove()方法實現(xiàn)正常的刪除處理。

ListIterator雙向迭代輸出

使用Iterator進行的迭代輸出操作有一個特點:只允許由前向后輸出,而如果現(xiàn)在需要進行雙向迭代處理,那么就必須依靠Iterator的子接口:ListIterator接口來實現(xiàn)了。需要注意的是,如果想要獲取ListIterator接口對象,Collection中并沒有定義相關的處理方法,但是List子接口有,也就是說這個輸出的接口是專門為List集合準備的。

什么是集合輸出
ListIterator接口

ListIterator接口中定義有如下的操作方法:

判斷是否有前一個元素:public boolean hasPrevious()
獲取當前元素:public E previous()

范例:實現(xiàn)雙向迭代

import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        List<String> all = new ArrayList<String>();all.add("Hello");all.add("World");all.add("MLDN");
        ListIterator<String> iter = all.listIterator();System.out.print("由前向后輸出:");while (iter.hasNext()) {System.out.print(iter.next() + "、");
        }System.out.print("\n由后向前輸出:");   //由前向后輸出:Hello、World、MLDN、while (iter.hasPrevious()) {System.out.print(iter.previous() + "、");  //由后向前輸出:MLDN、World、Hello、
        }      
    }
}

如果想實現(xiàn)由后向前的遍歷,那么首先要實現(xiàn)的是由前向后實現(xiàn)遍歷處理。

Enumeration輸出

Enumeration是在JDK1.0的時候就使用的輸出接口,這個輸出接口主要是為了Vector類提供服務的,一直到后續(xù)的JDK的發(fā)展,Enumeration依然只為Vector一個類服務,所以要想獲取Enumeration接口對象,那么必須依靠Vector類提供的方法:

獲取Enumeration:public Enumeration<E> elements()
在Enumeration接口中定義有兩個操作方法:
判斷是否有下一個元素:public boolean hasMoreElements()
獲取當前元素:public E nextElement()

范例:使用Enumeration實現(xiàn)輸出

import java.util.Enumeration;import java.util.Vector;public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        Vector<String> all = new Vector<String>();
        all.add("Hello");
        all.add("World");
        all.add("MLDN");
        Enumeration<String> enu = all.elements();while (enu.hasMoreElements()) {String str = enu.nextElement();
            System.out.print(str +"、");    //Hello、World、MLDN、}
    }
}

由于該接口出現(xiàn)的時間比較長了,所以在一些比較早的開發(fā)過程中,也有部分的方法只支持Enumeration輸出操作,但隨著類方法的不斷完善,大部分的操作都能直接利用Iterator實現(xiàn)了。

foreach輸出

除了使用迭代接口實現(xiàn)輸出之外,從JDK1.5開始加強型for循環(huán)也可以實現(xiàn)集合的輸出了。這種輸出的形式與數(shù)組的輸出操作形式類似。
范例:使用foreach輸出

import java.util.ArrayList;import java.util.List;public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        List<String> all = new ArrayList<String>();
        all.add("Hello");
        all.add("World");
        all.add("MLDN");for (String str : all){
            System.out.print(str+"、");   //Hello、World、MLDN、}     
    }
}

這種輸出最初出現(xiàn)時很多人并不建議使用,因為標準的集合操作還是以Iterator為主,但是畢竟JDK1.5都已經(jīng)推出十多年了,很多語法也開始被大部分人所習慣。

到此,關于“什么是集合輸出”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文名稱:什么是集合輸出
當前路徑:http://jinyejixie.com/article28/johpjp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站網(wǎng)站建設、外貿(mào)建站、Google、、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
焉耆| 扶沟县| 永川市| 吴桥县| 庆安县| 旬阳县| 永清县| 旬阳县| 太仓市| 育儿| 广河县| 遂溪县| 探索| 渝中区| 饶平县| 卫辉市| 元阳县| 来宾市| 化德县| 荥经县| 城步| 广饶县| 旬邑县| 古交市| 鄂伦春自治旗| 利川市| 峨眉山市| 三河市| 姜堰市| 五河县| 合肥市| 五莲县| 平远县| 炎陵县| 蒙山县| 广宁县| 鄂州市| 肥城市| 青铜峡市| 塘沽区| 桂东县|