[英]Casting iterator to Integer - ConcurrentModificationException
[英]Iterator as an integer
據我所知,Iterator是一個在聲明時定義類型的對象,但是它還帶有另外兩個方法: 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);
}
您需要從迭代器獲取Integer,然后打印該Integer:
Integer i = iterator.next();
System.out.println(i);
迭代器是整數的迭代器,它的行為不像整數。 下一個方法將返回一個整數。
不, Iterator<T>
作用不像T
其next()
方法,但是返回T值 。 即:
while(iterator.hasNext()) {
Integer myInteger = iterator.next();
int myInt = myInteger.intValue();
}
迭代器不是整數,但是如果您調用next()
可能會給您一個迭代器,而不是直接調用迭代器通常比使用2006年添加到Java 5.0的for-each循環更好。
for(int n : content) //content is a HashSet<Integer> object
System.out.println(n);
在Java 8中,您可以使用forEach方法。
content.forEach(System.out::println);
更確切地說, iterator.next()
返回一個對象類型變量。因此,必須進行typecasting
Integer myInteger = (Integer) iterator.next();
int i = myInteger.intValue();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.