Java集合List的使用详细解析
List简单介绍
- 鉴于Java中数组用来存储数据的局限性,我们通常使用java.util.List替代数组
- List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
- JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。
List接口方法
List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。
- 插入元素
- void add(int index, Object ele):在index位置插入ele元素
- boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
- 获取元素
- Object get(int index):获取指定index位置的元素
- List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
- 获取元素索引
- int indexOf(Object obj):返回obj在集合中首次出现的位置
- int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
- 删除和替换元素
- Object remove(int index):移除指定index位置的元素,并返回此元素
- Object set(int index, Object ele):设置指定index位置的元素为ele
List接口主要实现类:ArrayList
- ArrayList 是 List 接口的主要实现类
- 本质上,ArrayList是对象引用的一个”变长”数组
- Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合
ArrayList底层是Object数组
特定:查找和添加效率高;删除和插入的效率低。
List的实现类之二:LinkedList
对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高。
这是由底层采用链表(双向链表)结构存储数据决定的。
特有方法:
- void addFirst(Object obj)
- void addLast(Object obj)
- Object getFirst()
- Object getLast()
- Object removeFirst()
- Object removeLast()
List的实现类之三:Vector
- Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。
- 在各种List中,最好把ArrayList作为默认选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
特有方法:
- void addElement(Object obj)
- void insertElementAt(Object obj,int index)
- void setElementAt(Object obj,int index)
- void removeElement(Object obj)
- void removeAllElements()
面试题
以下代码输出结果为?
@Test public void testListRemove() { List list = new ArrayList(); list.add(1); list.add(2); list.add(3); updateList(list); System.out.println(list); } private static void updateList(List list) { //这里的参数2, 默认指的是索引,因为如果是值的话,还得进行装箱 //装箱有消耗 list.remove(2); }
到此这篇关于Java集合List的使用详细解析的文章就介绍到这了,更多相关List的使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中java.sql.SQLException异常的正确解决方法(亲测有效!)
SQLException是在Java中处理数据库操作过程中可能发生的异常,通常是由于底层数据库操作错误或违反了数据库规则而引起的,下面这篇文章主要给大家介绍了关于Java中java.sql.SQLException异常的正确解决方法,需要的朋友可以参考下2024-01-01SpringCloud添加客户端Eureka Client过程解析
这篇文章主要介绍了SpringCloud添加客户端Eureka Client过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-03-03Java实现删除排序数组中重复元素的方法小结【三种方法比较】
这篇文章主要介绍了Java实现删除排序数组中重复元素的方法,结合实例形式对比分析了三种常见的数组元素删除算法操作技巧,需要的朋友可以参考下2019-02-02mybatis QueryWrapper的条件构造之apply、last、select解析
这篇文章主要介绍了mybatis QueryWrapper的条件构造之apply、last、select,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03mybatis写xml时数字类型千万别用 !=‘‘(不为空串)进行判断的示例详解
这篇文章主要介绍了mybatis写xml时数字类型千万别用 !=‘‘(不为空串)进行判断的示例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
最新评论