整理ArrayList和LinkedList中的方法

ArrayList 和 LinkedList 是 Java 中两种常用的列表(List)实现。它们提供了许多相同的方法,但由于内部实现的不同,这些方法的性能可能会有所不同。以下是一些常用的方法:

添加元素

java 复制代码
add(E e): 在列表的末尾添加一个元素。
add(int index, E element): 在指定的索引位置插入一个元素。
addAll(Collection<? extends E> c): 将另一个集合的所有元素添加到列表的末尾。
addAll(int index, Collection<? extends E> c): 将另一个集合的所有元素插入到列表的指定位置。

删除元素

java 复制代码
remove(int index): 删除指定索引位置的元素。
remove(Object o): 删除第一个出现的指定元素。
removeAll(Collection<?> c): 删除列表中所有出现在指定集合中的元素。
clear(): 删除列表中的所有元素。

获取元素

java 复制代码
get(int index): 返回指定索引位置的元素。
element(): 返回列表的第一个元素(与 get(0) 相同)。
head(): 返回列表的第一个元素(仅 LinkedList 有此方法)。
tail(): 返回列表的最后一个元素之前的所有元素组成的列表(仅 LinkedList 有此方法)。

检查元素

java 复制代码
contains(Object o): 检查列表中是否包含指定的元素。
isEmpty(): 检查列表是否为空。
indexOf(Object o): 返回指定元素在列表中的第一个索引,如果列表不包含该元素,则返回 -1。
lastIndexOf(Object o): 返回指定元素在列表中的最后一个索引,如果列表不包含该元素,则返回 -1。

列表操作

java 复制代码
size(): 返回列表中的元素数量。
isEmpty(): 检查列表是否为空。
iterator(): 返回一个迭代器,用于遍历列表中的元素。
listIterator(): 返回一个列表迭代器,可以用于在列表中向前和向后遍历。
listIterator(int index): 返回一个列表迭代器,位于指定位置,并可以用于向前和向后遍历。

排序和搜索

java 复制代码
sort(Comparator<? super E> c): 使用指定的比较器对列表进行排序。
binarySearch(Object o): 返回指定元素在列表中的索引,该列表必须已排序。
binarySearch(Object o, Comparator<? super E> c): 使用指定的比较器在已排序的列表中查找指定元素的索引。

对于排序多说一句,

方法一: 可以按照自定义的规则进行排序,null表示按照自然顺序排列

java 复制代码
List<String> list = Arrays.asList("banana", "apple", "orange");  
list.sort(Comparator.comparing(String::length)); // 按照字符串长度排序

方法二: 使用Collections中的sort()方法

java 复制代码
List<String> list = Arrays.asList(5, 8, 4);  
Collections.sort(list);

总结:

选择使用 ArrayList 还是 LinkedList 应基于具体的需求,例如,如果需要频繁地访问列表中的元素,那么 ArrayList 可能会提供更好的性能,而如果需要频繁地插入和删除元素,那么 LinkedList 可能会更适合。

相关推荐
土狗TuGou7 分钟前
SQL内功笔记 · 第6篇:窗口函数的使用ROW_NUMBER等
java·数据库·后端·sql·mysql
Chase_______9 分钟前
【Java基础核心知识点全解·09】Java 内存布局与垃圾回收详解:栈、堆、栈帧、GC Roots 与对象回收
java·开发语言
武子康12 分钟前
Java-11 深入浅出 MyBatis 一级缓存详解:从原理到失效场景 Executor
java·后端
寻道码路26 分钟前
LangChain4j Java AI 应用开发实战(十):Embedding 模型与文本分类 - 语义向量化
java·人工智能·ai·embedding
折哥的程序人生 · 物流技术专研29 分钟前
Java 23 种设计模式:从踩坑到精通 | 抽象工厂 —— 支付/收款如何成套创建?跨平台 UI 如何一键换肤?
java·开发语言·后端·设计模式
方也_arkling32 分钟前
【Java-Day11】抽象类和抽象方法
java·开发语言
XS03010636 分钟前
并发编程 七
java
YikNjy1 小时前
string(c++)
java·服务器·c++
小江的记录本1 小时前
【Spring AI】Spring AI中RAG误触发与系统提示词泄露问题解决方案(完整版+代码方案)
java·人工智能·spring boot·后端·python·spring·面试
勇往直前plus2 小时前
Python 属性访问与操作全解析:内置函数、魔法方法与描述符深度指南
java·网络·python