Arrays.sort 和 Collections.sort 实现原理和区别?

Collection和Collections区别:

java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。

java.util.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。 

 

然后还有混排(Shuffling)、反转(Reverse)、替换所有的元素(fill)、拷贝(copy)、返回Collections中最小元素(min)、返回Collections中最大元素(max)、返回指定源列表中最后一次出现指定目标列表的起始位置( lastIndexOfSubList )、返回指定源列表中第一次出现指定目标列表的起始位置( IndexOfSubList )、根据指定的距离循环移动指定列表中的元素(Rotate);

 

事实上Collections.sort方法底层就是调用的array.sort方法。

Arrays.sort

    1.    适用对象:Arrays.sort 用于排序原始类型数组(如 int[], double[])和对象数组(如 String[], 自定义对象数组)。它属于 java.util.Arrays 类。

    2.    排序算法:对于小型数组,它可能使用插入排序;对于大数组,它通常使用归并排序(Java 7 及以后版本)或优化的快速排序(Java 8 及以后版本,当数组大小超过特定阈值时)。

    3.    稳定排序:对于对象排序,默认情况下是稳定的,即相等的元素在排序后的顺序保持不变。

    4.    参数:可以接受数组以及可选的比较器(Comparator)作为参数,允许自定义排序规则。

 

Collections.sort

    1.    适用对象:Collections.sort 用于排序 List 集合,属于 java.util.Collections 类。

    2.    排序算法:与 Arrays.sort 类似,对于小型列表可能使用插入排序,对于大型列表则采用归并排序或优化的快速排序。具体的算法选择和实现细节与 Arrays.sort 相似,随 Java 版本变化。

    3.    稳定排序:也是稳定的排序方法。

    4.    参数:需要一个 List 和一个可选的 Comparator 来进行自定义排序。

 

主要区别

    •    数据结构:最根本的区别在于它们操作的数据结构不同,Arrays.sort 处理数组,而 Collections.sort 处理集合(特别是 List)。

    •    接口和灵活性:由于集合提供了更丰富的接口和功能,使用 Collections.sort 可能会提供更多的灵活性和便捷性,尤其是在进行复杂数据操作时。

    •    泛型支持:Collections.sort 通过泛型提供了类型安全的排序,可以直接在编译时检查类型错误,而数组排序可能需要强制类型转换。

 

总结来说,选择 Arrays.sort 还是 Collections.sort 主要取决于你要排序的数据结构是数组还是集合。

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值