關(guān)于以Set集合為第二參數(shù)的foreach(第一參數(shù):第二參數(shù))
foreach結(jié)構(gòu)中(第一參數(shù):第二參數(shù)),第二參數(shù)應(yīng)該為第一參數(shù)的數(shù)組,例如第一參數(shù)為int時,第二參數(shù)為int[];第一參數(shù)為float時,第二參數(shù)為float[];我看到課程中老師寫到for(Entry:Set),for(String:Set)這樣兩種不同的結(jié)構(gòu),因此我想問問Set的類型是隨著其元素的類型的不同而不同的嗎?例如元素為String類型,那么Set為String數(shù)組,元素為Entry類型,那么Set為Entry數(shù)組,是這樣嗎?
2016-12-28
大體意思應(yīng)該是這樣的。 set是集合不是數(shù)組。我在 想可不可以for(Set:Set) 有一個 Set集合里面裝的是不同的Set集合。
2017-01-05
更準(zhǔn)確的說法是:Set中元素為String類型,那么引用parm1為String類型,Set中元素為Entry類型,那么引用parm1為Entry類型。而實際上引用parm1可以是Set中元素的父類型和實現(xiàn)的接口類型。
因為ForEach(parm1:parm2)本質(zhì)上是迭代器。以使用迭代器遍歷EntrySet為例
Set<Entry<String,String>>entrySet=studentMap.entrySet();
ForEach循環(huán)語句判斷循環(huán)的條件是iter.hasnext(),
parm1(Entry<String,String>entry)是接受iter.next()對象的引用。parm1的類型可以是iter.next()對象的父類型或者實現(xiàn)的接口類型,但是由于泛型集合的約束和向上造型帶來的多態(tài)性。? 我們習(xí)慣把parm1和parm2中元素的類型保持一致。下面演示parm1是父類型,如下:
回答不易,沒有積分也希望能多多支持。說了這么多,其實就一句,foreach()是迭代器。
2016-12-28
是這樣的。循環(huán)出來的類型要和循環(huán)的類型基本保持一致。