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());
       }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章