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