我想按特定的順序排序其中一個字段的流。排序Java流像開關條件
現在,我通過轉換流列出,並使用一個開關,然後重新加入他們到一個列表中所需的順序實現這一目標。
fruits.forEach(fruit -> { switch (fruit.getName()) { case "Orange": orangesList.add(fruit); break; case "Apple": applesList.add(fruit); break; case "WaterMelon": watermelonList.add(fruit); break; default: otherFruits.add(fruit); break; } }); genericFruitList.addAll(0, orangeList); genericFruitList.addAll(1, applesList); genericFruitList.addAll(2, watermelonList); genericFruitList.addAll(3, otherFruits);
我不知道是否有任何的改變來實現這一使用流分類方法 和使用自定義的比較器或類似的東西。
在此先感謝。
'Collectors.groupingBy(Fruit :: getName)'會按照名稱對水果進行分組,如同在交換機中一樣。然後你可以這樣做addAll。 –
創建一個幫助程序類可能會給你適當的列表:fruitHelper.getList(fruit.getName) –
請注意,您目前的邏輯很奇怪。假設你有兩種水果:你的結果'genericFruitList'將是'橙子,蘋果,西瓜,其他,西瓜,蘋果,橙子'。你的意思是指定插入點,還是隻打算在最後添加它們? –