2017-08-01 35 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