集合输出的四种形式
- Iterator迭代器的输出(适合于所有的collection子类)
这个Iterator中几个重要的方法(Scanner类就是Iterator接口的子类,所以可以得到是如下的结构关系)
- api
public boolean hasNext) ; 判断是否有数据
public E next() ; 取出当前数据
public default void remove(); 删除
- 测试Demo
public class JavaAPIDemo {
public static void main(String[ ] args) throws Exception {
Set<String> all = Set.of("Hello", "World", "MLDN");
Iterator<String> iter = all.iterator() ; // 实例化Iterator接 对象
while (iter.hasNext()) {
String str = iter.next() ;
System.out.println(str);
}
}
}
- 注意点
需要注意的是在collection中存在一个remove()的方法,为什么还需要在Iterator迭代器里面还存在一个remove()方法,是因为在迭代的过程中,如果使用collection中的remove()方法的话 会出现错误,如果使用的是子接口中的静态方法的话[Collection.remove],会出现问题是不允许修改操作的异常抛出,如果是是使用子实现类的话,这个时候抛出异常为并发更新的异常.
如果这个时候一定要进行删除的话,就使用Iterator中的对象.remove()的进行数据的删除操作.
- ListIterator双向迭代器
这个双向迭代器的中对象,在collection中是不存在一个返回ListIterator的对象的,而是在Collection的子接口中存在这个返回对象LIST中标,所以这个方法是专门为List集合去进行输出的准备的
- api
判断是否有前一个元素 :public boolean hasPrevious;
获取当前元素 :public E previous
- 测试Demo
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("hello");
list.add("al");
list.add("wrold");
ListIterator<String> iter=list.listIterator();
System.out.println("有前往后面");
while(iter.hasNext()) {
System.out.println(iter.next());
}
System.out.println("由后面往前面输出");
while(iter.hasPrevious()) {
System.out.println(iter.previous());
}
}
- 注意
这个地方双向迭代的过程不是说真正的是从后面往前面读取数据的,而是先往前面进行数据的读取,然后在进行的一个指针作用,在从中进行的数据输出
- ENUMERATION枚举输出
Eunmeration枚举输出只支持与Vector这个类进行服务,想要获取的这个类的对象,必须是通过Vector这个类进行时会实现的,(是这个子实现类独有一个输出操作的方法)
- api
获取Enumeration: public Enumeration E> elements);
在Enumeration接口之中定义有两个操作方法:
判断是否有下一个元素: public boolean hasMoreElements();
获取当前元素: public E nextElement();
- 测试Demo
public static void main(String[] args) {
Vector<String> vec=new Vector<String>();//子类独有的一个方法
vec.add("hello");
vec.add("al");
vec.add("wrold");
Enumeration<String> enu= vec.elements();
while(enu.hasMoreElements()) {
System.out.println(enu.nextElement());
}
}
- Foreach输出
是1.5以后开始推出的一种输出集合的形式,最开始的时候,主要进行数组的输出。现在的话也可以进行集合的输出 - 测试demo
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("哈哈");
list.add("嘿嘿");
list.add("嘻嘻");
for (String string : list) {
System.out.println(string);
}
}
参考声明:部分图片来自魔乐科技学习视频