久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在同一個類中實現 Java Iterator 和 Iterable?

Implement Java Iterator and Iterable in same class?(在同一個類中實現 Java Iterator 和 Iterable?)
本文介紹了在同一個類中實現 Java Iterator 和 Iterable?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在嘗試理解 Java IteratorIterable 接口

I am trying to understand Java Iterator and Iterable interfaces

我正在寫這門課

class MyClass implements Iterable<String> {
    public String[] a = null;
    public MyClass(String[] arr) {
        a = arr;    
    }

    public MyClassIterator iterator() {
        return new MyClassIterator(this);
    }

    public class MyClassIterator implements Iterator<String> {
        private MyClass myclass = null;
        private int count = 0;
        public MyClassIterator(MyClass m) {
            myclass = m;    
        }

        public boolean hasNext() {
            return count < myclass.a.length;
        }
        public String next() {
            int t = count;
            count++;
            return myclass.a[t];
        }

        public void remove() {
            throw new UnsupportedOperationException();
        }
    }   
}

它似乎正在工作.

我應該有:

Myclass implements Iterable<Stirng>, Iterator<String> {

}

或者我應該把 MyClassIterator 放在 MyClass 之外

Or I should put MyClassIterator outside MyClass as

class MyClass implements Iterable<String> {
    public String[] a = null;
    public MyClass(String[] arr) {
        a = arr;    
    }
    public MyClassIterator iterator() {
        return new MyClassIterator(this);
    }
}


    public class MyClassIterator implements Iterator<String> {
        private MyClass myclass = null;
        private int count = 0;
        public MyClassIterator(MyClass m) {
            myclass = m;    
        }

        public boolean hasNext() {
            return count < myclass.a.length;
        }
        public String next() {
            int t = count;
            count++;
            return myclass.a[t];
        }

        public void remove() {
            throw new UnsupportedOperationException();
        }
    }   

哪個更好?

推薦答案

你應該幾乎永遠同時實現 IterableIterator班級.他們做不同的事情.迭代器自然是有狀態的 - 當您使用它進行迭代時,它必須更新其對世界的看法.然而,一個可迭代對象只需要能夠創建新的迭代器.特別是,您可以讓多個迭代器同時處理同一個原始可迭代對象.

You should almost never implement both Iterable and Iterator in the same class. They do different things. An iterator is naturally stateful - as you iterate using it, it has to update its view of the world. An iterable, however, only needs to be able to create new iterators. In particular, you could have several iterators working over the same original iterable at the same time.

您當前的方法非常好 - 我會更改實施的某些方面,但在職責分離方面很好.

Your current approach is pretty much okay - there are aspects of the implementation I'd change, but it's fine in terms of the separation of responsibilities.

這篇關于在同一個類中實現 Java Iterator 和 Iterable?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Java Remove Duplicates from an Array?(Java從數組中刪除重復項?)
How to fix Invocation failed Unexpected Response from Server: Unauthorized in Android studio(如何修復調用失敗來自服務器的意外響應:在 Android 工作室中未經授權)
AES encryption, got extra trash characters in decrypted file(AES 加密,解密文件中有多余的垃圾字符)
AES Error: Given final block not properly padded(AES 錯誤:給定的最終塊未正確填充)
Detecting incorrect key using AES/GCM in JAVA(在 JAVA 中使用 AES/GCM 檢測不正確的密鑰)
AES-256-CBC in Java(Java 中的 AES-256-CBC)
主站蜘蛛池模板: 国产福利在线播放 | 日日综合 | 玖玖操| 午夜久久久 | 国产精品久久久久久久久久尿 | 欧美网站一区 | 欧区一欧区二欧区三免费 | 草草视频在线播放 | 老司机67194精品线观看 | 国产一二三区免费视频 | 欧美黄色精品 | 国产免费一区二区三区免费视频 | 久久人人网 | 亚洲va欧美va天堂v国产综合 | 免费欧美| 99免费在线 | 日韩欧美三级在线 | 91午夜在线 | 精品久久久久久久人人人人传媒 | 视频一区二区在线观看 | 精品国产乱码一区二区三区 | 国产在线不卡视频 | 福利一区二区 | 欧美电影免费观看 | 国产日韩久久 | 在线午夜 | 亚洲精品福利在线 | 国产欧美日韩一区 | 亚洲欧美一区二区三区在线 | av中文字幕在线观看 | 亚洲国产精品一区二区www | 中文字幕高清一区 | 欧美精品在线播放 | 人人鲁人人莫人人爱精品 | 色婷婷综合久久久中字幕精品久久 | av 一区二区三区 | 久久国| 中文字幕高清免费日韩视频在线 | av喷水 | 青娱乐国产 | 国产日韩一区二区 |