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