今天学习了的主要内容:
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
可以转载我的学习日记但请注明出处,谢谢。
本文章是本人学习笔记,不进行任何商用!也请别拿去商用!只为记录本人学习历程。
毕