四 迭代器模式Iterator(行為型模式)

2021-07-11 05:35:41 字數 1825 閱讀 4637

迭代器模式為順序訪問集合物件的元素提供一種方式,且不暴露其底層表示法。

就資料結構而言,它們把複雜的瀏覽途徑部分委託給iterator類別。讓其資料結構能與各式各樣的iterator類別搭配,而且分和自如。因而iterator類別包容了資料結構(如arraylist和database)的多變性,非常有助於軟體的新陳代謝。

容器介面:

inte***ce collection

迭代器介面:

inte***ce iterator
線性表的鏈式儲存結構

class linkedlist implements collection 

public object getdata()

public void setdata(object data)

public node getnext()

public void setnext(node next)

}public void add(object o)

tail.setnext(n);

tail = n;

size++;

}public int size()

@override

public iterator iterator()

}

鍊錶的迭代器:

private class linkedlistiterator implements iterator 

@override

public boolean hasnext()

}

線性表的順序儲存結構:

class arraylist implements collection 

os[index] = o;

index++;

}public int size()

public iterator iterator()

private class arraylistiterator implements iterator

@override

public boolean hasnext()

}}

支援泛形:

class genericarraylist

os[index] = o;

index++;

}public int size()

}

測試:

package interator;

public class test1

system.out.println(al.size());

// ------------遍歷----------------

/** arraylist a = (arraylist) al; for (int i = 0; i < a.index; i++)

*/// -----------

iterator it = al.iterator();

while (it.hasnext())

system.out.println("dasdsadsa");

// --------泛型

genericarraylistga = new genericarraylist<>();

ga.add("sss");

}}

迭代器模式(Iterator)

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中的各種元素,而又不暴露該物件的內部表示。當你需要訪問乙個聚合物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮使用迭代器模式。另外,當需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結構提供如開始 ...

迭代器模式(Iterator)

1.目的 當需要遍歷 單種方式或多種方式 遍歷乙個組合物件時,使用遍歷模式。該模式類似與將容器的介面進行封裝,不對外直接暴露容器的介面的做法類似。2.ifndef iterator h define iterator h include include using namespace std cla...

Iterator 迭代器模式

現在有乙個集合。其內部元素的儲存方式可能比較複雜。為了讓使用者在不用關心其內部表示的情況下對其元素進行訪問,於是建立了乙個迭代器用於對集合的各個元素進行訪問。為了給使用者提供乙個更友好且強大的介面類,於是對迭代器以組合的形式進行封裝,得到乙個管理類。使用者直接操作該管理類即可得到指定元素,或通過管理...