1. 程式人生 > >Java_集合輸出的四種形式

Java_集合輸出的四種形式

集合輸出一共有四種手段:Iterator、ListIterator、Enumeration、foreach
1.迭代輸出:Iterator
只要是Collection介面的子類物件,一定有一個iterator()取得Iterator物件,用於集合輸出。
在Iterator接口裡有三個抽象方法:
(1)判斷是否有下一個元素:public boolean hasNext();
(2)取得當前元素:public E next();
(3)刪除元素:public default void remove();

如:Iterator使用

public class Test{
	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("A");
		list.add("A");
		list.add("B");
		list.add("C");
		Iterator<String> iterator = list.iterator();
		while(iterator.hasNext()) {
			String string = iterator.next();
			System.out.println(string);
		}
	}
}

如:刪除元素

public class Test{
	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("A");
		list.add("A");
		list.add("B");
		list.add("C");
		Iterator<String> iterator = list.iterator();
		while(iterator.hasNext()) {
			String string = iterator.next();
			if(string.equals("A")) {
				//使用集合提供的remove()方法,則會產生ConcurrentModificationException
//				list.remove("A");
				//使用iterator的remove方法則不會產生異常
				iterator.remove();
				continue;
			}
			System.out.println(string);
		}
	}
}
如果在集合遍歷的時候(Iterator遍歷)修改集合元素,會產生ConcurrentModificationException,使用iterator.remove()則不會產生此異常。
產生ConcurrentModificationException原因:modCount在Iterator中與原本的集合不一致。modCount指的是集合的修改次數,每次修改集合就會+1。
2.雙向迭代介面:ListIterator
此介面定義的方法:
(1)判斷是否有上一個元素:public boolean hasPrevious();
(2)取得上一個元素:public E previous();
·取得ListIterator介面物件:public ListIterator listIterator();

如:ListIterator介面使用

public class Test{
	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("A");
		list.add("A");
		list.add("B");
		list.add("C");

		ListIterator<String> listIterator = list.listIterator();
		//從前向後輸出
		while(listIterator.hasNext()) {
			System.out.print(listIterator.next() + " ");
		}
		System.out.println();
		//從後向前輸出
		while(listIterator.hasPrevious()) {
			System.out.print(listIterator.previous() + " ");
		}
	}
}
注意:只有List接口才有。要想實現從後向前輸出,必須先從前向後輸出。
3.Enumeration列舉輸出
Enumeration的介面定義:
(1)判斷是否有下一個元素:public boolean hasMoreElements();
(2)取得元素:public E nextElement();
取得這個介面的例項化物件,只能夠依靠Vector子類。在Vector類中提供有一個取得Enumeration介面物件的方法:
public Enumeration elements()

如:使用Enumeration輸出

public class Test{
	public static void main(String[] args) {
		Vector<String> vector = new Vector<>();
		vector.add("A");
		vector.add("A");
		vector.add("B");
		vector.add("C");
		
		Enumeration<String> enumeration = vector.elements();
		while(enumeration.hasMoreElements()) {
			System.out.println(enumeration.nextElement());
		}
	}
}
4.foreach輸出

如:使用foreach輸出

public class Test{
	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("A");
		list.add("A");
		list.add("B");
		list.add("C");
		for (String string : list) {
			System.out.println(string);
		}
	}
}