集合輸出
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());
}
}
}