實訓16 2018.04.16
阿新 • • 發佈:2018-04-16
except 實訓 叠代 clas tcl ava 所有 col cep
叠代器
使用叠代器獲取集合(Collection)對象:
import java.util.*; public class TestClass { public static void main(String[] args){ Collection<String> collection=new ArrayList<String>(); collection.add("a"); collection.add("b"); for(Iterator<String> it=collection.iterator();it.hasNext();) { System.out.println(it.next()); } } }
當it.hasNext()為false時,使用it.next()會拋出NoSuchElementException異常。
在Collection中存儲時如果不設置泛型,那麽默認Object類型對象。當使用其中某個對象的(特有)方法時需要向下轉型。
for-each可以對數組和Collection進行遍歷,而不需要通過下標。遍歷時不能像下標一樣進行增刪。
至此,有三種叠代集合或數組的方式:
1. for(int i;i<arr.length;++i){}
2. for each
3.for(Iterator<String> it=collection.iterator();it.hasNext();) {}
泛型
Java中的泛型是“偽泛型”,不會被保存到.class文件中。泛型類似於一種規範。
含有泛型的方法:public <T> T[] toArray(T[] a){}
含有泛型的接口、類:interface Einter<String>{},class Eclass<E>{}。這裏使用“E”表示始終不確定泛型的類型,直至被調用時才確定。當然也可以在定義時就給定泛型的類型,像定義的接口那樣。
泛型通配符<?>
public static void printCollection(Collection<?> list) { Iterator<?> it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }
使用泛型通配符類似於使用Object,只能使用Obeject類中的方法。
其中,
<? extends Parent>表示接收Parent及其子類的對象;
<? super Children>表示接收Children及其父類(所有父類,直至Object)的對象。
實訓16 2018.04.16