栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java8 Collections.sort(有时)不对JPA返回的列表进行排序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java8 Collections.sort(有时)不对JPA返回的列表进行排序

好吧,这是一个完美的教学法,告诉您程序员为什么不应该扩展不是为子类设计的类。诸如“ Effective
Java”之类的书告诉您原因:当超类演化时,尝试拦截每种方法以改变其行为的尝试将失败。

在这里,

IndirectList
扩展
Vector
并覆盖几乎所有修改其行为的方法,这是一种清晰的反模式。现在,随着Java 8基类的发展。

从Java
8开始,接口可以具有

default
方法,因此
sort
添加了类似的方法,这些方法的优点在于,与
Collections.sort
实现不同,实现可以覆盖该方法,并提供更适合特定
interface
实现的实现。
Vector
这样做有两个原因:现在所有协定都
synchronized
扩展为排序,并且优化的实现可以将其内部数组传递给该
Arrays.sort
方法,从而跳过先前实现中已知的复制操作(
ArrayList
执行相同操作)。

为了立即获得这种好处,即使对于现有代码,

Collections.sort
也已进行了改进。它委托
List.sort
默认情况下将委托给另一个方法,该方法实现通过
toArray
和使用复制的旧行为
TimSort
。但是,如果
List
实现重写,
List.sort
则也会影响行为
Collections.sort

       interface method   using internal       List.sort          array w/o copyingCollections.sort ─────────────────> Vector.sort ─────────────────> Arrays.sort


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号