JAVA学习日记: Iterator与Iterable

今天学习了的主要内容:

1.Iterable接口
2.Iterator接口

Iterable接口:

属于java.lang包,实现该接口的类的对象可以变成foreach语句的遍历目标。
 
 方法:
  	Iterator<T> iterator()泛型方法。
  	返回一个在T类型元素上迭代的迭代器。
	一般是实现该接口然后匿名实现Iterator接口。

Iterator接口:

Iterator<E>称他为迭代器。
  	属于java.util包,他被大量的运用于集合框架之中,它为遍历集合对象元素
  	提供了便利。
 		
方法:
  	boolean hasNext()判断后续元素是否存在。
  	E next()获得后续E类型元素。
  	void remove()删除迭代器返回的最后的一个元素。

IterableAndIteratorTest01类(运用这两个接口来实现对象的迭代):

package LessonForIterableAndIterator;

import java.util.Iterator;

class Game
{
	private String name;
	
	public Game(String name)
	{
		this.name = name;
	}

	public String getName() 
	{
		return name;
	}
}

class GameShop implements Iterable<Game>
{
	private Game[] g ;
	private int index = 0;
	private int count = 0;
	
	public GameShop(int i)
	{
		g = new Game[i];
	}
	
	public void setArray(Game g2)
	{
		g[count++] = g2;
	}

	@Override
	public Iterator<Game> iterator() 
	{
		return new Iterator<Game>() 
		{

			@Override
			public boolean hasNext() 
			{
				return (index != g.length);//没东西length = 0就返回false
			}

			@Override
			public Game next() 
			{
				return g[index++];
			}
		};
	}
}

class GameMarket 
{
	private Game[] g ;
	private int count = 0;
	
	public GameMarket(int i)
	{
		g = new Game[i];
	}
	
	public void setArray(Game g2)
	{
		g[count++] = g2;
	}

	public Game[] getG() 
	{
		return g;
	}
}

public class IterableAndIteratorTest01 
{
	public static void main(String[] args) 
	{
		Game ge1 = new Game("Mario");//创建Game对象
		Game ge2 = new Game("MHW");
		
		GameMarket gm1 = new GameMarket(2);
		gm1.setArray(ge1);
		gm1.setArray(ge2);
		
		for (Game g:gm1.getG())//得调用get方法才能遍历
		{
			System.out.println(g.getName());
		}
		
		System.out.println("-------after used iterator-------");
		
		GameShop g1 = new GameShop(2);
		g1.setArray(ge1);
		g1.setArray(ge2);
		
		for (Game g:g1)//不用get方法也能遍历
		{
			System.out.println(g.getName());
		}
	}
}

本篇部分文字来源于:
	咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
	在这里十分感谢老师能够给我带来学习的激情。

2020.10.28
可以转载我的学习日记但请注明出处,谢谢。
本文章是本人学习笔记,不进行任何商用!也请别拿去商用!只为记录本人学习历程。
毕
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值