2016-03-02 44 views
-1

我使用Java進行編程,並且想要將Enum的所有值添加到將用於填充ComboBox的FXCollections.observableArrayList
它工作正常用下面的代碼:將枚舉值添加到observableArrayList.with lambdas

for(OutputType t : OutputType.values()) { 
    outputTypes.add(t.toString()); 
} 

我如何能做到這一點有一個內襯使用lambda表達式?

+3

爲什麼一個班輪?你的代碼是可讀的,不要毀了它。 – Maroun

+0

所以你更喜歡那個在下面的oneliner? – Pabi

+0

如果我已經寫了它,我不會浪費時間嘗試在線上。 – Maroun

回答

3
Arrays.stream(OutputType.values()).forEach(o -> outputTypes.add(o.toString())); 
+0

謝謝,即使將轉換保存到列表。 – Pabi

+0

@Pabi:在這方面,實際上沒有太大的區別,因爲'Arrays.asList()'只是返回數組的一個薄包裝器('Arrays.ArrayList'),這與'Arrays'類似。流(對象[])'。事實證明,您的原始代碼在這方面是最好的,因爲沒有創建額外對象 –

0

好吧,算出來。問題是OutputType.values()返回一個數組。
因此,與Arrays.asList()我能使用.forEach()

Arrays.asList(OutputType.values()).forEach(OutputType -> outputTypes.add(OutputType.toString())); 
+0

請注意命名約定 –

+0

我錯過了哪個約定? – Pabi

+0

變量/參數名稱應該在'camelCase'而不是'PascalCase'中 –