Прежде всего, и для того, чтобы понять этот вопрос, я собираюсь кратко объяснить мой проект:Проблем с итератором в Java
У меня есть класс с именем Pair
, который в основном создает тип
Pair<String,Double>
и имеет getFirst()
и getSecond()
методы для возврата значений String
и Double
соответственно.
Тогда у меня есть еще один класс, названный Package
, который в основном состоит в списке Pairs
и реализует интерфейс Iterable
, так что я могу перебирать корыта список:
Package<Pair<String,Double>> package;
List <Pair<String,Double>> list;
Что я хочу, чтобы sum
в doubles
на каждом Pair
, используя iterator()
.
итератора определяется как это для Package
класса:
public Iterator<E> iterator() {
return this.iterator();
}
Я попытался два различных подхода, которые в обоих случаях результатом в:
Exception in thread "main" java.lang.StackOverflowError
at Package.iterator(Package.java:98)
Вот первый один:
public static double packageWeight(Package<Pair<String, Double>> package) {
double sum = 0;
Pair<String, Double> pair;
while (package.iterator().hasNext()) {
pair = package.iterator().next();
sum = sum + pair.getSecond();
}
return sum;
}
И второй один:
public static double packageWeight(Package<Pair<String, Double>> package) {
double sum = 0;
Pair<String, Double> pair;
Iterator<Pair<String,Double>> it = Package.iterator();
while (it.hasNext()) {
pair = it.next();
sum = sum + pair.getSecond();
}
return sum;
}
Мой вопрос: Что я делаю неправильно, чтобы получить эту ошибку?
Можете ли вы разместить остальную часть своего кода? –
Кроме того, вам не нужно передавать итератору объект для перебора? В методе packageWeight ... – holtc
У вас не может быть переменной, называемой 'package', верно? Это ключевое слово java. –