Java---集合(List集合)

1.List接口概述

List 特征: 可重复,有序(有下标 )

(1)实现List接口的集合类中的元素是有序的,且允许重复

(2)List集合中的元素都对应一个整数型的序号记载其在集合中的位置,可以根据序号存取集合中的元素。

JDK API所提供的List集合类常用的有:

ArrayList(重点,必须掌握)

LinkedList

Vector(并不常用,了解)


2.List常用方法

特有的方法:

add(int index, 元素)                 在指定下标位置插入元素

Object get(int index)                获取指定位置的元素

int indexOf(元素)                     找到这个元素第一次出现的位置

int lastIndexOf(元素)               找到这个元素最后一次出现的位置

remove(int index )                   删除指定位置上的元素

set(int index, 新的元素)           修改指定位置上的元素

List<E> subList(int fromIndex, int toIndex) 截取指定位置上元素, 不包括结束位置


3.ArrayList和LinkedList的区别

ArrayList 常用:

底层使用数组

自动扩容:

添加了10个元素, 添加11个, 新创建一个数组: 长度 = 旧数组长度 * 1.5 = 10*1.5 = 15, 再把旧数组中的元素拷贝到新数组, elementData 指向新数组

ArrayList 对elementData数组进行new操作, 初始化, 不是在new ArrayList() , 而是在第一次调用add() 方法

elementData[]={}

添加元素: 判断数组时候是否需要扩容

elementData的长度 < 最小容量(原来元素个数 + 1)

调用: grow(最小容量) 自动扩容

第一次添加元素: 初始化elementData = new Object[10];

这个集合已经有元素: 新数组长度 = 旧的数组长度 *1.5 进行数组的拷贝,

Arrays.copyof() 往elementData添加新元素 elementData[size++] = 新元素;

 ArraylIst: 特征: 查找元素效率高, 插入,删除元素效率低

LinkedList:

LinkedList: 底层存储元素: 使用双向链表: 不连续的空间, 由n个节点组成, 节点就是一个对象: Node

LinkedList: 特征: 查询效率低, 插入,删除效率高  


4.Vector与ArrayList的区别

1.Vector是jdk1.0出现的,老版本java使用的集合,注重安全,是线程安全的;

ArrayList是jdk1.2之后使用,注重性能,是非线程安全的.

2.当长度扩充时,Vector直接扩充一倍,而ArrayList是扩充50%

ArrayList默认长度为10个,当存满10个时,长度会自动扩充50%

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxmm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值