4、集合框架Itertor接口

集合框架Itertor接口

1、集合输出
前面我们已经学习了集合的基本操作,很多情况下,我们需要把集合的内容进行输出,也
就是遍历集合。
遍历集合的方式有以下几种:
1、Iterator
2、 ListIterator
3、 Enumeration
4、 foreach
其中Iterator的使用率最高,在JDK1.5后新增的foreach也被大量使用。

2、Iterator
public interface Iterator
对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的
Enumeration。

boolean hasNext()如果仍有元素可以迭代,则返回 true。
E next()返回迭代的下一个元素。
void remove()从迭代器指向的 collection 中移除迭代器返回的最后一个元素。

3、ListIterator
public interface ListIterator
extends Iterator
系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列
表中的当前位置。

void add(E e)增加元素
boolean hasPrevious()判断是否有前一个元素
E previous()取出前一个元素
void set(E e)修改元素的内容
int previousIndex()前一个索引位置
int nextIndex()下一个索引位置

4、Enumeration
public interface Enumeration
实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用
nextElement 方法将返回一系列的连续元素。
注:此接口的功能与 Iterator 接口的功能是重复的。此外,Iterator 接口添加了一个可选的
移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是
Enumeration 接口。

boolean hasMoreElements()判断是否有下一个元素
E nextElement()取出当前元素
import java.awt.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class IteratorDome {
	
	private static void enumration() {
		Vector<String> vs=new Vector<String>();
		vs.add("hjgj");
		vs.add("ghuopihv");
		vs.add("gjhagd");
		vs.add("dakj");
		
		Enumeration<String> es=vs.elements();
		//hasMoreElements() 测试此枚举是否包含更多的元素。
		while(es.hasMoreElements()) {
			System.out.println(es.nextElement());
		}
	}
	
	
	//Iterator(jdk1.5前)
	private static void iterator(Collection<cat> c) {
		Iterator<cat> iter=c.iterator(); 
		//hasNext, 如果仍有元素可以迭代,则返回 true。
		while(iter.hasNext()) {
			System.out.println(iter.next());
		}
	}
	
	//foreach(jdk1.5后)
	private static void foreach(Collection<cat> c) {
		for(cat s:c) {
		System.out.println(s);
		}
	}
	

	public static void main(String[] args) {
		ArrayList<cat> list=new ArrayList<>();
		cat c1=new cat("hh",1);
		cat c2=new cat("huahau",3);
		cat c3=new cat("beibei",2);
		cat c4=new cat("hh",1);
		list.add(c1);
		list.add(c2);
		list.add(c3);
		list.add(c4);
		//foreach(list);
		iterator(list);
		enumration();
	}

}

cat [name=hh, age=1]
cat [name=huahau, age=3]
cat [name=beibei, age=2]
cat [name=hh, age=1]
hjgj
ghuopihv
gjhagd
dakj

5、foreach
在前面的知识讲解中,我们使用foreach来输出数组的内容,那么也可以输出集合中的内容。在使用foreach输出的
时候一定要注意的是,创建集合时要指定操作泛型的类型。
List numbers = new ArrayList<>();
JDK1.8新特性:
//no.1
numbers.forEach((Integer integer) -> {System.out.println(integer);});
//no.2
numbers.forEach(integer -> {System.out.println(integer);});
//no.3
numbers.forEach(integer -> System.out.println(integer));
//no.4
numbers.forEach(System.out::println);
//no.5
numbers.forEach(new MyConsumer());

/*
	 * jdk1.8新特性
	 */
	private static  void foreach() {
		ArrayList<String> list=new ArrayList<>();
		list.add("hjgj");
		list.add("ghuopihv");
		list.add("gjhagd");
		list.add("dakj");
		
		//list.forEach((String s)->{System.out.println(s);});
		//list.forEach( s->{System.out.println(s);});
		//list.forEach( s->System.out.println(s));
		//list.forEach(System.out::println);

hjgj
ghuopihv
gjhagd
dakj

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值