二分查找之RandomAccess的作用

阅读: 评论:0

二分查找之RandomAccess的作用

二分查找之RandomAccess的作用

在Java集合里,大致分为以数组为基础的随机访问数据结构和以链表为基础的链式访问(不随机)数据结构。

例如,使用java.util.Collections#binarySearch(java.util.List<? extends java.lang.Comparable<? super T>>, T)进行二分查找时(前提是保证升序,否则使用带有比较器的二分查找方法)是不是RandomAccess的List就有了实现区别。如果不了解二分查找请看这里。这里以集合元素可比较(实现java.lang.Comparable接口)为例,带有比较器的查找方法大体一致,查找方法为java.util.Collections#binarySearch(java.util.List<? extends T>, T, java.util.Comparator<? super T>)。

看源码所知,查找之前先判断List是否可以RandomAccess(或者判断集合大小,不足5000时也走随机访问),如图:

1、如果是java.util.ArrayList或者java.util.Arrays.ArrayList等实现RandomAccess的List,那么就进行数组访问方式的二分查找

2、如果是java.util.LinkedList等通过链表访问的List,就进行java.util.ListIterator双向迭代器访问,

其中get方法为双向游标获取元素

3、另外,在java.util.Collections集合工具类中有很多静态方法和静态内部类,包含

java.util.Collections.CheckedList未实现RandomAccess随机访问;

java.util.Collections.CopiesList实现RandomAccess随机访问;

java.util.Collections.EmptyList实现RandomAccess随机访问;

java.util.Collections.SingletonList实现RandomAccess随机访问;

java.util.Collections.SynchronizedList未实现RandomAccess随机访问;

java.util.Collections.SynchronizedRandomAccessList实现RandomAccess随机访问;

java.util.Collections.UnmodifiableList未实现RandomAccess随机访问。

本文发布于:2024-01-29 10:39:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649595514692.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:作用   RandomAccess
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23