我使用Java進行編程,並且想要將Enum的所有值添加到將用於填充ComboBox的FXCollections.observableArrayList
。
它工作正常用下面的代碼:將枚舉值添加到observableArrayList.with lambdas
for(OutputType t : OutputType.values()) {
outputTypes.add(t.toString());
}
我如何能做到這一點有一個內襯使用lambda表達式?
我使用Java進行編程,並且想要將Enum的所有值添加到將用於填充ComboBox的FXCollections.observableArrayList
。
它工作正常用下面的代碼:將枚舉值添加到observableArrayList.with lambdas
for(OutputType t : OutputType.values()) {
outputTypes.add(t.toString());
}
我如何能做到這一點有一個內襯使用lambda表達式?
Arrays.stream(OutputType.values()).forEach(o -> outputTypes.add(o.toString()));
謝謝,即使將轉換保存到列表。 – Pabi
@Pabi:在這方面,實際上沒有太大的區別,因爲'Arrays.asList()'只是返回數組的一個薄包裝器('Arrays.ArrayList'),這與'Arrays'類似。流(對象[])'。事實證明,您的原始代碼在這方面是最好的,因爲沒有創建額外對象 –
好吧,算出來。問題是OutputType.values()
返回一個數組。
因此,與Arrays.asList()
我能使用.forEach()
:
Arrays.asList(OutputType.values()).forEach(OutputType -> outputTypes.add(OutputType.toString()));
爲什麼一個班輪?你的代碼是可讀的,不要毀了它。 – Maroun
所以你更喜歡那個在下面的oneliner? – Pabi
如果我已經寫了它,我不會浪費時間嘗試在線上。 – Maroun