大家好,我是香香。
前面给大家介绍了 Collection 容器,今天带来的是更细节的实现类介绍。
可以看到 Collection 容器中最常见的两个接口:List、Set。
List 接口的实现类包括 ArrayList、LinkedList 和 Vector。
ArrayList
ArrayList 是基于动态数组实现的 List 接口的实现类。
由于是基于数组实现的,因此 ArrayList 可以随机访问元素,时间复杂度为 O(1)。
但在中间插入或删除元素时,需要移动其他元素,时间复杂度为 O(n)。
List<String> list = new ArrayList<>();
接下来可以使用 List 接口中定义的方法来操作 ArrayList 对象,如添加元素、删除元素、获取元素等。
例如:
list.add("apple");
list.add("banana");
list.add("orange");
String fruit = list.get(1);
list.remove("orange");
LinkedList
LinkedList 是基于双向链表实现的 List 接口的实现类。
它可以高效地在头部和尾部插入或删除元素,时间复杂度为 O(1)。
LinkedList 的使用方式与 ArrayList 类似。
List<String> list = new LinkedList<>();
接下来可以使用 List 接口中定义的方法来操作 LinkedList 对象,如添加元素、删除元素、获取元素等。
例如:
list.add("apple");
list.add("banana");
list.add("orange");
String fruit = list.get(1);
list.remove("orange");
Vector
它与 ArrayList 类似,也是基于动态数组实现的,可以自动扩容,可以设置初始容量。
由于是基于数组实现的,因此 Vector 可以随机访问元素,时间复杂度为 O(1)。
但在中间插入或删除元素时,需要移动其他元素,时间复杂度为 O(n)。
使用方式:
List<String> list = new Vector<>();
接下来可以使用 List 接口中定义的方法来操作 Vector 对象,如添加元素、删除元素、获取元素等。
例如:
list.add("apple");
list.add("banana");
list.add("orange");
String fruit = list.get(1);
list.remove("orange");
三者之间的区别比较
ArrayList、LinkedList 和 Vector 都是 List 接口的实现类,它们都可以用来存储有序的元素,允许重复。
其中,ArrayList 和 Vector 都是基于动态数组实现的。
它们可以随机访问元素,时间复杂度为 O(1)。
在尾部添加元素的时间复杂度也为 O(1)。
但在中间插入或删除元素时,需要移动其他元素,时间复杂度为 O(n)。
ArrayList 和 Vector的区别在于,ArrayList 不是线程安全的,而Vector是线程安全的。
LinkedList 是基于双向链表实现的,可以高效地在头部和尾部插入或删除元素,时间复杂度为 O(1)。
因此,在选择使用 ArrayList、LinkedList 和 Vector 时,需要根据具体的需求来进行选择。
总结:
如果需要随机访问元素,并且没有多线程并发访问的需求,可以选择 ArrayList;
原文地址:https://blog.csdn.net/weixin_51109279/article/details/134716063
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_47486.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!