2017-08-01 36 views
-2

在Java中,我有一個名爲Pin的對象數組,我希望對它進行排序。目前,它需要三行代碼返回地圖對象的數組排序是這樣的:如何在一行中初始化排序數組而不是創建數組然後對其進行排序

Pin[] plist = PinList.values().toArray(new Pin[PinList.size()]); 
Arrays.sort(plist,Pin.PinComp);//This is done to sort the pins 
return plist; 

這裏,抓住所有的引腳到引腳陣列,排序數組,然後返回數組排序。我希望將其縮小爲一個代碼聲明,以便我可以在一行中排列return一個新的引腳數組。

是否可以創建一個排序的數組,而不是創建一個數組然後對其進行排序?

+3

究竟爲什麼你如此努力走出自己的方式硬塞代碼到1條單行?你看起來是合乎邏輯和可讀的。 – csmckelvey

+1

*「是否可以創建一個排序的數組,而不是創建一個數組然後對它進行排序?」*否。即使[shmosel給出的流解決方案](https://stackoverflow.com/a/45446156/5221149)將首先在內部創建一個數組,然後對其進行排序。你可能沒有明確地做,但它仍然會發生。 – Andreas

+1

*「我希望縮小到一行代碼」*然後將3 *語句*放在同一行*上*。我不推薦它,但它會起作用。 – Andreas

回答

2

您可以使用流:

return PinList.values() 
     .stream() 
     .sorted(Pin.PinComp) 
     .toArray(Pin[]::new); 
+1

你可以把他們放在同一條線上爲他的利益;) – Kayaman

+0

@Kayaman我認爲他的意思是一個*聲明*。 – shmosel