簡體   English   中英

迭代器作為整數

[英]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>作用不像Tnext()方法,但是返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM