java利用AbstractCollection實現自己的可迭代集合類
Colllection是 java.uitl包中所有集合類的一個根介面.. 所以我們可以通過實現Collection介面來實現自己的集合類..
不過由於Collection介面 方法太多.. 於是JDK提供了AbstractCollection抽象類...
這個類是Collection的一個骨幹..即為我們提供了Collection的大量實現..我們只需要實現 iterator 和size方法 ...如果我們想要修改自己建立的容器那麼要實現add和remove方法否則 。。
進行修改操作會丟擲UnSupporttedException異常 下面是一個例子 ...
在生成迭代器的時候結合區域性內部類使用
package me;
import java.util.AbstractCollection;
import java.util.Iterator;
class Info{
String info=null ;
public Info(String name) {
this.info=name ;
}
@Override
public String toString() {
return this.getClass().getName()+": "+info;
}
}
class MyCollection extends AbstractCollection<Info>{
private Info []arr =new Info[100];
private int count= 0;
public boolean add(Info info){
if(count<=arr.length){
arr[count++]=info ;
return true ;
}
return false;
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return super.equals(obj);
}
@Override
public Iterator<Info> iterator() {
return new Iterator<Info>() {
private int flag=0 ;
@Override
public boolean hasNext() {
return flag<MyCollection.this.count ;
}
@Override
public Info next() {
return arr[flag++];
}
@Override
public void remove() { //支援刪除操作
throw new UnsupportedOperationException() ;
}
};
}
@Override
public int size() {
return 0;
}
}
public class Me {
public static void main(String []agrs){
MyCollection me=new MyCollection() ;
me.add(new Info("zhangsan ")) ;
me.add(new Info("lisi ")) ;
me.add(new Info("zwangwu ")) ;
me.add(new Info("zmaliu ")) ;
for(Info i:me){
System.out.println(i);
}
}
}
相關推薦
java利用AbstractCollection實現自己的可迭代集合類
Colllection是 java.uitl包中所有集合類的一個根介面.. 所以我們可以通過實現Collection介面來實現自己的集合類.. 不過由於Collection介面 方法太多.. 於是JDK提供了AbstractCollection抽象類... 這個類是Co
python 對給定可迭代集合統計出現頻率,並排序
給定一個可迭代sequence,對其中的值進行出現次數統計: 方法1: def get_counts(sequence): counts = {} for x in sequence
python 可迭代序列(列表,元組,字串),實現鄰近去重,順序不變
碼字不易,轉載請標明出處… 鄰近去重程式碼實現如下: def special_func_order(seq): list_ = [] # 定義一個空列表,用來儲存判斷後的資料 for i in range(len(seq) - 1): # 假如 le
python如何使用生成器函式實現可迭代物件
實際案例 實現一個可迭代物件的類,它能迭代出給定範圍內所有素數: pn = PrimeNumbers(1, 30) for k in pn: print k123 輸出結果為: 2 3 5 7 11 13 17 19 23 291 解決方案:將該類的__iter
python-6-如何實現可迭代物件和迭代器物件?
python的可迭代物件:list(列表)是可迭代物件,dict(字典)是可迭代物件,string(字串)也是可迭代物件。 l = [1,2,3,4] s = 'abcdef' for x in
Java利用Redis實現消息隊列
.get keys rpo throws max del 鍵值 先進先出 instance 應用場景 為什麽要用redis?二進制存儲、java序列化傳輸、IO連接數高、連接頻繁 一、序列化 這裏編寫了一個java序列化的工具,主要是將對象轉化為byte數組,和根
Java利用MethodHandle實現反射時調用super的method
AS sta port 沒有 ase handle test ble pub 一:實現 1.Base類的實現 package me.silentdoer.reflecsuper; /** * @author silentdoer * @version
用程式碼來解釋可迭代性,迭代器,生成器的區別
一. 創造器(creator) 這是我自己造的一個名詞,因為在python術語中,對只實現了__next__()方法的物件,好像沒有任何名分,為了說明,我將只實現了__next__()方法的物件稱為創造器(creator)。 class O_Next: def __init__(se
基於模型融合的推薦系統實現(2):迭代式SVD分解
SVD演算法的原理網路上也有很多,不再細說了,關鍵是我們得到的資料是不完整的資料,所以要算SVD就必須做一次矩陣補全。補全的方式有很多,這裡推薦使用均值補全的方法(用每一行均值和每一列均值的平均來代替空白處),然後可以計算SVD,作PCA分析,然後就可以得到預測結果。 但是我們這裡有
迭代器,可迭代物件,生成器區別
迭代物件 :實現__iter__方法,返回迭代器。不需要顯示繼承Iterable, 迭代器: 實現_iter__方法,__next__方法,不需要顯示繼承Iterator from collections import Iterable,Iterator def generator():
python的迭代器,可迭代物件,生成器理解
上篇文章, python itertools 裡面實現的groupby方法。裡面用到了object, id, iter等很基礎的方法, 看的有點暈。這裡重新整理一下迭代器,可迭代物件, 生成器。複習一下,加深印象。 python語言很容易上手。比如for迴圈。 a = [1, 2,
Python生成器,迭代器,可迭代物件
在瞭解Python的資料結構時,容器(container)、可迭代物件(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推導式(list,set,dic
Python3——賦值_可迭代
如果賦值物件是可迭代的,那麼賦值給一個變數則結果是整個可迭代物件,賦值給多個變數則結果是該迭代物件對應位置的值。 line = '你好 8' wordslist = line.split(' ') word, freq = line.split(' ') print(wordslist) pri
迭代器和可迭代物件
基於python3 迭代器 = 可迭代的物件 可迭代的物件 != 迭代器 講在前面: 返回迭代器的物件,有:open(), map(), zip()和filte()函式,這幾個函式直接返回迭代器也就是可以直接在結果中呼叫next 如: f = open('xxx.txt')
搞清楚 Python 的迭代器、可迭代物件、生成器
很多夥伴對 Python 的迭代器、可迭代物件、生成器這幾個概念有點搞不清楚,我來說說我的理解,希望對需要的朋友有所幫助。 1 迭代器協議 迭代器協議是核心,搞懂了這個,上面的幾個概念也就很好理解了。 所謂迭代器協議,就是要求一個迭代器必須要實現如下兩個方法 iterator.__iter__(
使用java內部類實現自己的容器
這兩天期中考試,感覺Java答得不是很好,所以決定將Java抓一下,不能整天光抱著c++不放,儘管c++是我的主要學習方向,但java是我的專業課程,學不好的話以後的課設和畢設就真的涼了!!!還是自己不會利用時間,看周圍一些人,他們總是可以多頭兼顧,我這一天下來卻不知道自己忙了些啥!這些都是
python基礎-可迭代物件
可直接用於for迴圈的物件,統稱為可迭代物件,Iterable 包括集合資料型別,如list、tuple、set、dict、str,還包括生成器 判斷一個物件是否為可迭代物件: >>>from collections import Itera
可迭代物件 詳解
可迭代物件詳解 1.可迭代物件 我們已經知道可以對list、tuple、dict、set、str等型別的資料使用for...in...的迴圈語法從其中依次拿到資料進行使用,我們把這樣的過程稱為遍歷,也叫迭代。 把可以通過for...in...這類語句迭代讀取一條資料供我們使用的物件稱之為
生成器、可迭代、迭代器
生成器: 將[]改為() G = (i*I for I in range(8)) 生成器是一個物件不能直接列印 通過遍歷得到生成器的資料 For I in g: &nb
Python中判斷物件是否可迭代
可使用collections模組的Iterable型別來判斷物件是否可迭代 >>> from collections import Iterable >>> isinstance(1, Iterable) False >>> isinst