Java类集--Iterator接口、ListIterator接口、foreach及Enumeration接口

简介: <h1>Iterator接口简介:</h1> <div><img src="http://img.blog.csdn.net/20131125090335921" alt=""><br></div> <div><img src="http://img.blog.csdn.net/20131125090434515" alt=""><br></div> <div><br></d

Iterator接口简介:




import java.util.List ;
import java.util.ArrayList ;
import java.util.Iterator ;
public class IteratorDemo01{
	public static void main(String args[]){
		List<String> all=  new ArrayList<String>() ;	// 
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		Iterator<String> iter = all.iterator() ;	// 为Iterator接口实例化
		while(iter.hasNext()){	// 判断是否有内容
			System.out.println(iter.next()) ;	// 输出内容
		}
	}
};


import java.util.List ;
import java.util.ArrayList ;
import java.util.Iterator ;
public class IteratorDemo02{
	public static void main(String args[]){
		List<String> all=  new ArrayList<String>() ;	// 
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		Iterator<String> iter = all.iterator() ;	// 为Iterator接口实例化
		while(iter.hasNext()){	// 判断是否有内容
			String str = iter.next() ;
			if("_".equals(str)){
				iter.remove() ;	// 删除元素		
			}else{
				System.out.println(str) ;	// 输出内容
			}
		}
		System.out.println("删除之后的集合:" + all) ;
	}
};


import java.util.List ;
import java.util.ArrayList ;
import java.util.Iterator ;
public class IteratorDemo03{
	public static void main(String args[]){
		List<String> all=  new ArrayList<String>() ;	// 
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		Iterator<String> iter = all.iterator() ;	// 为Iterator接口实例化
		while(iter.hasNext()){	// 判断是否有内容
			String str = iter.next() ;
			if("_".equals(str)){
				all.remove(str) ;	// 删除元素		
			}else{
				System.out.println(str) ;	// 输出内容
			}
		}
		System.out.println("删除之后的集合:" + all) ;
	}
};
在使用Iterator输出时,不要使用集合类中的remove()方法,而只能使用Iterator接口中的remove方法。

ListIterator接口:


虽然此接口可以进行双向的输出,但是遗憾的是Collection接口中并没有定义可以为此类实例化的操作,只有List接口中才存在了ListIterator接口的实例化操作。
例子:完成双向输出。
import java.util.ArrayList ;
import java.util.List ;
import java.util.ListIterator ;
public class ListIteratorDemo01{
	public static void main(String argsp[]){
		List<String> all = new ArrayList<String>() ;
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		ListIterator<String> iter = all.listIterator() ;
		System.out.print("由前向后输出:") ;
		while(iter.hasNext()){
			String str = iter.next() ;
			System.out.print(str + "、") ;
		}
		System.out.print("\n由后向前输出:") ;
		while(iter.hasPrevious()){
			String str = iter.previous() ;
			System.out.print(str + "、") ;
		}
	}
};


import java.util.ArrayList ;
import java.util.List ;
import java.util.ListIterator ;
public class ListIteratorDemo02{
	public static void main(String argsp[]){
		List<String> all = new ArrayList<String>() ;
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		ListIterator<String> iter = all.listIterator() ;
		System.out.print("由前向后输出:") ;
		while(iter.hasNext()){
			String str = iter.next() ;
			System.out.print(str + "、") ;
			iter.set("LI - " + str) ;	// 修改内容
		}
		System.out.print("\n由后向前输出:") ;
		iter.add("LXH");
		while(iter.hasPrevious()){
			String str = iter.previous() ;
			System.out.print(str + "、") ;
		}
	}
};

foreach对集合输出的支持:

foreach可以输出数组,实际上foreach语法中也同样支持集合的输出的操作。
import java.util.ArrayList; 
import java.util.List; 
public class ForeachDemo01{
	public static void main(String args[]){
		List<String> all = new ArrayList<String>() ;
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		for(String str:all){
			System.out.print(str + "、") ;
		}
	}
};

实际上Iterator属于一个新的输出接口,在最早的java刚出来的时候如果要想输出,使用Enumeration接口完成输出。
但是在java中因为存在发展的历史问题,所以有些地方还会使用到Enumeration。
而且必须注意的是在使用Enumeration输出的时候一般都是直接操作Vector类完成的。
import java.util.Vector; 
import java.util.Enumeration; 
public class EnumerationDemo01{
	public static void main(String args[]){
		Vector<String> all = new Vector<String>() ;
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		Enumeration<String> enu = all.elements() ;
		while(enu.hasMoreElements()){	//判断是否有内容,hasNext()
			System.out.print(enu.nextElement() + "、") ;	// 输出元素:next()
		}
	}
};


目录
相关文章
|
14天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
5天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
5天前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
24 1
|
23天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
43 17
|
14天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
32 1
|
19天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
67 4
|
21天前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
44 4
|
19天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
41 2
|
24天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
下一篇
无影云桌面