ArrayList说我也想要排序(一)

一次面试被问到ArrayList如果要进行排序,该怎么办?当时我就被问懵了,ArrayList不是没有排序功能的吗。只能怪自己基础不扎实,所以这次就好好研究下这个问题。


ArrayList说我也想要排序(一)_第1张图片

先来看下上面这段代码,运行上面的代码得到的是输出如下,我们发现元素会维持被加入ArrayList的顺序。


ArrayList说我也想要排序(一)_第2张图片

现在我们有个需求,需要对ArrayList进行字母排序,或许你会去找ArrayList的说明文档,看看有没有sort()的方法,ArrayList有一大堆方法,但就是没有sort()之类可以排序的方法。

有的小伙伴就说,我可以不用ArrayList这个集合啊,使用TreeSet这个集合完全可以解决排序这个问题啊。

对,TreeSet可以实现,不过使用Collections类的sort()方法对ArrayList进行排序也可以解决这个问题。


看Collections类的源码的确有sort()这个方法,而且它的参数就是List.而ArrayList是实现List接口的,由于多态,ArrayList也可以作为参数传进去。

但是这个方法到底行不行呢?我们不妨试下,在原先代码上加Collections.sort()这个方法。


ArrayList说我也想要排序(一)_第3张图片

ArrayList说我也想要排序(一)_第4张图片

同样运行上面的代码,咦,这个方法的确对ArrayList进行字母排序了。好了现在我们ArrayList里放的是String,但如果我们放的是对象会发生什么呢?比如有个People对象,有name、age属性。现在我要对name进行字母排序,用这样的方法也可以吗?这个问题我们放到下一篇讨论。

你可能感兴趣的:(ArrayList说我也想要排序(一))