package
com.demo.application;
import
java.util.Iterator;
public
class
Car
implements
Iterable<String> {
private
String[] cars;
private
int
index;
public
Car() {
cars =
new
String[
10
];
index =
0
;
}
public
void
addCar(String car) {
if
(index == cars.length) {
String[] largerCars =
new
String[cars.length +
5
];
System.arraycopy(cars,
0
, largerCars,
0
, cars.length);
cars = largerCars;
largerCars =
null
;
}
cars[index] = car;
index++;
}
@Override
public
Iterator<String> iterator() {
Iterator<String> it =
new
Iterator<String>() {
private
int
currentIndex =
0
;
@Override
public
boolean
hasNext() {
return
currentIndex < cars.length && cars[currentIndex] !=
null
;
}
@Override
public
String next() {
return
cars[currentIndex++];
}
@Override
public
void
remove() {
throw
new
UnsupportedOperationException();
}
};
return
it;
}
public
static
void
main(String[] args) {
Car cars =
new
Car();
cars.addCar(
"Dodge"
);
cars.addCar(
"Ferrari"
);
cars.addCar(
"Sedan"
);
Iterator<String> carIterator = cars.iterator();
while
(carIterator.hasNext()) {
System.out.println(carIterator.next());
}
}
}