gpt4 book ai didi

java - 模式迭代器

转载 作者:行者123 更新时间:2023-12-02 11:56:11 25 4
gpt4 key购买 nike

我有一个任务,其中包括模式实现(迭代器)以及在先前创建的类 Hotel 和 Tours 中添加方法 iterator()。不幸的是,我对 Java 还很陌生,所以我不知道如何使用 IIterator 中的方法进行 arraylist 内部。信息-界面

public class IIterator<T> implements Iterator<T> {

private Object elements;
int index = 0;


public boolean hasNext() {
return index< Array.getLength(elements);
}
public T next() {
return (T) Array.get(elements, index++);
}
public void remove() {
throw new UnsupportedOperationException("remove");
}
}
public class Hotel implements Info, Serializable, Cloneable, Comparable{
public Iterator iterator() {
return new IIterator();
}
}
public class Tours implements Info, Serializable, Cloneable, Comparable{
public Iterator iterator() {
return new IIterator();
}
}

ArrayList<Info> inter = new ArrayList();
inter.add(new Hotel("Lara", 100, 5));
inter.add(new Hotel("Katya", 10, 1));
inter.add(new Tours("Lara", 1000, length));
inter.add(new Tours("HelsinkiPanorama", 1010, length));

最佳答案

已编辑

你可以这样做:

    for (Info info : inter) {
System.out.println(info.getString());
}

    Iterator<Info> it = inter.iterator();
while (it.hasNext()){
System.out.println(it.next().getString());
}
<小时/>

上一个答案

我不确定你的问题,但如果你想要一个简单的迭代器示例,你可以看到这个:

public class Hotel {

private String name;

public Hotel(String name) {
this.name = name;
}

public String getName() {
return name;
}
}

public class Tours implements Iterable<Hotel>{

private List<Hotel> hotels = new ArrayList<>();

public void addHotel(Hotel hotel){
hotels.add(hotel);
}

@Override
public Iterator<Hotel> iterator() {
return hotels.iterator();
}
}

示例:

public static void main(String[] args) {
Tours tours = new Tours();
tours.addHotel(new Hotel("hotel-0"));
tours.addHotel(new Hotel("hotel-1"));
tours.addHotel(new Hotel("hotel-2"));
tours.addHotel(new Hotel("hotel-3"));

for (Hotel hotel : tours) {
System.out.println(hotel.getName());
}
}

它打印:

hotel-0
hotel-1
hotel-2
hotel-3

如果您想查看底层示例

public class Tours implements Iterable<Hotel>{

private int numHotels = 0;
private Hotel[] hotels = null;

public void addHotel(Hotel hotel){
if (hotels == null){
hotels = new Hotel[5];
} else if ( numHotels + 1 >= hotels.length){
hotels = Arrays.copyOf(hotels, numHotels + 5);
}
hotels[numHotels++] = hotel;
}

@Override
public Iterator<Hotel> iterator() {
return new HotelIterator();
}

private class HotelIterator implements Iterator<Hotel> {
private int index = 0;

@Override
public boolean hasNext() {
return index < numHotels;
}

@Override
public Hotel next() {
return hotels[index++];
}
}
}

示例2:

public static void main(String[] args) {
Tours tours = new Tours();
tours.addHotel(new Hotel("hotel-0"));
tours.addHotel(new Hotel("hotel-1"));
tours.addHotel(new Hotel("hotel-2"));
tours.addHotel(new Hotel("hotel-3"));

for (Hotel hotel : tours) {
System.out.println(hotel.getName());
}
}

它打印:

hotel-0
hotel-1
hotel-2
hotel-3

关于java - 模式迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47593745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com