List,ArrayList and LinkedList

List:包含零个或多个对象的有序集合,允许重复

表达类型

  • ArrayList
  • LinkedList

list.size() 和 list.elementData() ,一个是元素个数,一个是真正存储数据的数组

    增强for循环,对把int数组list遍历;
    for(type 变量名:集合变量名){……}

eg.

for (int num : list) {//把num从list里的元素挨个走一遍
//写自己的程序
}

要创建列表,请指定菱形<>运算符中的对象/通用类型:

  • List<String> list1 = new ArrayList<String>();
  • List<String> list2 = new LinkedList<String>();

eg.

  • ArrayList是一个动态数组,随着容器中的元素不断增加,容器的大小也会随着增加。同时由于ArrayList底层是数组实现,所以可以随机访问元素。
  • LinkedList可以根据索引来随机访问集合中的元素。除此之外,LinkedList还实现了Deque接口,所以可以被当成“双端队列”来使用,还可以被当成“栈”来使用。它也是一个双向链表,LinkedList不能随机访问,但增删元素比较方便。

区别

  1. 底层实现:LinkedList底层是双向链表 ;ArrayList底层是可变数组
  2. 随机访问:LinkedList随机访问效率低 ;ArrayList随机访问效率高,因为LinkedList需要移动指针
  3. 插入删除:LinkedList插入和删除效率快 ;ArrayList插入和删除效率低,因为ArrayList要移动数据
     

常见操作

​​list.add(5)//adding 将list当做当前list中的一个元素添加进去
list.add(1, 3)//inserting
list.set(2, 7)//assigning 将数组中7替换成2
list.get(2)//retrieving 索引
list.size()//length
list.remove(1)//remove 删除1
list.clear()//remove all 删除所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值