Java類集基礎概念-集合輸出篇

集合輸出

1.迭代輸出Iterator

在JDK1.5之前,Collection接口中就定義了iterator()方法(List、Set中也繼承了下來),通過該方法可以取得Iterator接口的實例化對象;

在JDK1.5之後,將該方法提升爲Iterator接口中的方法;

1.1Iterator接口中的抽象方法

  • 判斷是否有下一個元素:public boolean hasNext();

  • 取得當前元素:public E next();

  • 刪除元素:public default void remove();--主要解決集合內容的刪除操作

    若在迭代器遍歷的過程中,使用集合的remove()方法,會產生ConcurrentModificationException異常

1.2代碼實現

只能從前向後輸出(Collection接口提供,List/Set)

調用Collectin集合子類的Iterator方法取得內置的迭代器,使用以下輸出格式

Iterator iterator = personList.iterator(); //實例化Iterator對象
while(iterator.hasNext()){
    System.out.println(iterator.next()); 
}

2.雙向迭代接口ListIterator

2.1產生原因

Iterator接口只能由前向後進行迭代處理;

要想進行雙向迭代,必須依靠Iterator接口的子接口ListIterator來實現

2.2常用方法

  • 判斷是否有上一個元素:public boolean hasPrevious();

  • 取得上一個元素:public E previous();

Iterator接口對象是由Collection接口支持的,但是ListIterator是由List接口支持的;

  • 取得ListIterator接口對象:public ListIterator listIterator();

2.3代碼實現

public class listTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(4);
        list.add(3);
        list.add(9);
        ListIterator listIterator = list.listIterator();//取得雙向迭代器
        System.out.print("從前向後輸出:");
        while (listIterator.hasNext()){
            System.out.print(listIterator.next()+"、");
        }
        System.out.print("\n從後往前輸出:");
        while (listIterator.hasPrevious()){
            System.out.print(listIterator.previous()+"、");
        }
    }
}

3.Enumeration枚舉輸出(不推薦)

3.1出現版本

JDK1.0

3.2常用方法

  • 判斷是否有下一個元素:public boolean hasMoreElements();

  • 取得元素:public E nextElement();

Enumeration只能依靠Vector子類,在Vector類中提供了取得Enumeration接口對象的方法

  • 取得Enumeration接口對象:public Enumeration elements()

3.3代碼實現

public class listTest {
    public static void main(String[] args) {
        Vector<Integer> vector = new Vector<>();
        vector.add(1);
        vector.add(4);
        vector.add(3);
        vector.add(9);
        Enumeration<Integer> enumeration = vector.elements();
        while (enumeration.hasMoreElements()){
            System.out.println(enumeration.nextElement());
        }
    }
}

4.foreach輸出

4.1使用版本

JDK1.5後可以使用foreach輸出數組,也可以輸出集合

4.2代碼實現

public class listTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(4);
        list.add(9);
        list.add(3);
        for(Integer i : list){
            System.out.println(i);
        }
    }
}

5.Iterator輸出Map集合

5.1關鍵分析

Collection接口有iterator()方法來取得Iterator對象來輸出集合;Map集合本身沒有該方法;

關鍵:Map中有一個方法,可以將Map集合轉爲Set集合:public Set<Map.Entry<K,V>> entrySet();

5.2代碼實現

public class mapTest {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"A");
        map.put(2,"hello");
        map.put(3,"Java");
        //1.Map->Set
        Set<Map.Entry<Integer,String>> set = map.entrySet();
        //2.獲取Iterator對象
        Iterator<Map.Entry<Integer,String>> iterator = set.iterator();
        //3.輸出
        while (iterator.hasNext()){
            //4.取得每一個Map.Entry對象
            Map.Entry<Integer,String> entry = iterator.next();
            //5.取得key、value
            System.out.println(entry.getKey()+"="+entry.getValue());
       }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章