点击上方“Java之间”,选择“置顶或者星标”
你关注的就是我关心的!
作者:蔡先森_caiyq
来源:https://www.jianshu.com/p/3e2a9e4c9e01
在我们的开发中,List接口是最常见不过,而且我们几乎每天都在用ArrayList或者LinkedList,但是细心的同学有没有发现,ArrayList中实现了RandomAccess接口,而LinkedList却没有实现RandomAccess接口,这是为什么呢?
RandomAccess接口中是空的,RandomAccess接口又是什么呢?
RandomAccess接口
RandomAccess是一个标记接口,官方解释是只要List实现这个接口,就能支持快速随机访问。 而什么是随机访问呢? 接下来我们来举例说明。 Collections是集合的一个工具类,我们看一下Collections源码中的二分搜索方法。
我们来分析一下测试结果:
ArrayList通过for遍历比通过iterator遍历要稍快,LinkedList通过iterator遍历比通过for遍历要快。
所以说在我们的应用中,要考虑使用List接口的哪种实现类,可以更好更高效的满足实际场景需求。
所以在这里通过实现RandomAccess接口来区分List的哪种实现类。
总结
最后总结一句话: 实现RandomAccess接口的List可以通过for循环来遍历数据比使用iterator遍历数据更高效,未实现RandomAccess接口的List可以通过iterator遍历数据比使用for循环来遍历数据更高效。
1、史上最强多线程面试47题(含答案),建议收藏 2、天天吹微服务,单体应用有啥不好? 3、 12 个免费又酷炫的 IntelliJ IDEA 插件!
4、学Redis这篇就够了!
5、Java中检查空字符串(null或空白)的方法有几种?
6、惊悚!一次惊心动魄的服务器误删文件的恢复过程! 7、面试问你红黑树,你都懂了吗 8、面试官:数据量很大,分页查询很慢,怎么优化? 9、前后端分离开发思路的探讨 10、Java 中的 jar ,天天见,可是你知道它的运行机制吗?
