Java 如何在一行中初始化已排序数组,而不是创建数组然后对其排序
在Java中,我有一个名为Java 如何在一行中初始化已排序数组,而不是创建数组然后对其排序,java,arrays,sorting,Java,Arrays,Sorting,在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; 在这里,它将所有管脚抓取到一个管脚数组中,对数组进行排序,然后返回排序后的数组。我希望将其压
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 PinList.values()
.stream()
.sorted(Pin.PinComp)
.toArray(Pin[]::new);
你到底为什么要这么努力地把代码塞进一行?您所做的似乎合乎逻辑且可读。“是否可以创建一个已排序的数组,而不是创建一个数组然后对其进行排序?”不可以。即使是服务器也会先在内部创建一个数组,然后对其进行排序。您可能没有显式地执行它,但它仍然会发生。“我希望将其压缩为一行代码”,然后将这3条语句放在同一行上。我不建议这样做,但它会起作用。我只是觉得奇怪的是,您必须使用void方法来更改数组本身,而不是应用命令对数组进行排序。为了他的利益,您可以将它们放在同一行;)