2016-02-13 5 views
1

Насколько я знаю, Итератор является объектом, тип которого определяется во время его объявления, но который также поставляется с двумя другими способами: hasNext() и next(). Итак, помимо этих двух методов, если я пишу Iterator<Integer> iterator, то итератор должен вести себя как объект Integer. Однако, когда я пытаюсь использовать iterator.intValue(), я получаю сообщение об ошибке.Итератор как целое число

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method intValue() is undefined for the type Class<capture#1-of ? extends Iterator> 
    Syntax error, insert "}" to complete Block 

Вот полный код:

Iterator<Integer> iterator = content.iterator(); //content is a HashSet<Integer> object 
    System.out.println(iterator.intValue()); 

    while(iterator.hasNext()) 
    { 
     iterator.next(); 
     System.out.println(iterator); 

    } 
+0

На Итераторе нет метода intValue(). вы можете использовать 'if (iterator.hasNext()) {iterator.next(). intValue()}' – SomeDude

+0

"Итератор должен вести себя как объект Integer" Нет, это неправильно. – QBrute

ответ

3

Вы должны получить целое число от итератора, а затем распечатать, что Integer:

Integer i = iterator.next(); 
System.out.println(i); 

итератор итератор для целых чисел, он не ведет себя как целое число. Следующий метод вернет целое число.

+0

Спасибо, сейчас работает! – MMCXCVII

2

Нет, в этом Iterator<T> не действует как T - его метод next(), однако, возвращает значение T. То есть:

while(iterator.hasNext()) { 
    Integer myInteger = iterator.next(); 
    int myInt = myInteger.intValue(); 
} 
0

итератора не является целым числом, хотя это может дать вам, если вы звоните next() Вместо вызова итератора напрямую, как правило, лучше использовать для-каждый цикл, который был добавлен в Java 5.0 в 2006 году .

for(int n : content) //content is a HashSet<Integer> object 
    System.out.println(n); 

Из Java 8 вы можете использовать метод forEach.

content.forEach(System.out::println); 
Смежные вопросы