整理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 可能会更适合。

相关推荐
爬菜几秒前
异常(5)
java
苹果酱056724 分钟前
Golang的数据库备份与恢复
java·vue.js·spring boot·mysql·课程设计
青石路43 分钟前
经由同个文件多次压缩的文件MD5都不一样问题排查,感慨AI的强大!
java·后端
木头没有瓜1 小时前
Mybatis集合嵌套查询,三级嵌套
java·tomcat·mybatis
知行021 小时前
23中设计模式之观察者模式
java·观察者模式·设计模式
迷路的小犀牛1 小时前
JAVA编程【设计模式之工厂模式】
java·开发语言·设计模式
郑祎亦1 小时前
【JAVA面试题】Spring、Spring MVC、Spring Boot、Spring Cloud的区别与联系
java·spring·mvc
RainbowSea1 小时前
130道基础OJ编程题之: 68\~77
java·后端
江喜原1 小时前
反序列化子类型丢失
java·开发语言