【转载】List接口学习笔记(ArrayList和LinkedList)
来源:互联网 发布:最好的阅读软件 编辑:程序博客网 时间:2024/05/22 00:05
List承诺可以将元素维护在特定的序列中。List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和删除元素。List与 set 不同,列表通常允许重复的元素。并且存放的顺序与插入的顺序一致。
List接口的常用方法有:
add(E o)
:将指定对象加入到列表中。
add(int index, E element)
:将对象加入到指定位置处。
addAll(Collection<? extends E> c)
:追加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。
addAll(int index, Collection<? extends E> c) :将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。
remove(int index)
:移除某个位置上的元素。
remove(Object o)
: 移除列表中出现的首个指定元素。
set(int index, E element) :用指定元素替换列表中指定位置的元素。
size()
:返回列表大小。
.......
常用的有两种List类型:ArrayList和LinkedList。
一、ArrayList
ArrayList擅长于随即访问元素,因为它像数组一样提供了下标,可以根据下标直接访问,所以可以将ArrayList看作可扩充自身尺寸的数组。但是在ArrayList的中间插入和移除元素时较慢。
1 package com.list; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 import java.util.List; 6 7 public class ArrayListTest { 8 public static void main(String[] args) { 9 List<String> list = new ArrayList<String>();10 //添加元素11 list.add("aaa");12 list.add("bbb");13 list.add("aaa");14 list.add("ddd");15 list.add("ccc");16 list.add(null);17 //遍历18 for (String string : list) {19 System.out.println(string);20 }21 System.out.println("---------------");22 //修改23 list.set(1, "bbb2");24 //删除25 list.remove("ccc");26 //迭代器遍历27 Iterator<String> iterator = list.iterator();28 while(iterator.hasNext()){29 System.out.println(iterator.next());30 }31 System.out.println("--------------");32 list.clear(); //清空列表33 System.out.println("清空后list的大小"+list.size());//打印大小34 List<String> list2 = new ArrayList<String>();35 list2.add("a");36 list2.add("b");37 //将list2添加到list中38 list.addAll(list2);39 //遍历40 for (String string : list) {41 System.out.println(string);42 }43 }44 }
输出结果为:
1 aaa 2 bbb 3 aaa 4 ddd 5 ccc 6 null 7 --------------- 8 aaa 9 bbb210 aaa11 ddd12 null13 --------------14 清空后list的大小015 a16 b
由输出结果的1-5行可以看出,list存放元素的顺序与加入的顺序一致。
二、LinkedList
LinkedList通过代价较低的在List中间进行插入和删除操作,提供了优化的顺序访问。但是在随即访问方面相对比较慢。
下面举个例子来演示LinkedList和ArrayList随即访问的速度:
1 package com.list; 2 3 import java.util.ArrayList; 4 import java.util.LinkedList; 5 import java.util.List; 6 import java.util.Random; 7 8 public class LinkedListTest { 9 public static void main(String[] args) {10 List<Integer> arraylist = new ArrayList<Integer>();11 for (int i = 0; i < 5000; i++) {12 arraylist.add(i);13 }14 List<Integer> linkedlist = new LinkedList<Integer>();15 for (int i = 0; i < 5000; i++) {16 linkedlist.add(i);17 }18 Random rand = new Random(5000);19 //随机访问arrayList20 long start = System.currentTimeMillis();21 for (long i = 0; i < 500000; i++) {22 arraylist.get(rand.nextInt(5000));23 }24 long end = System.currentTimeMillis();25 System.out.println("arrayList随机访问时间:"+(end - start));26 //随机访问arrayList27 start = System.currentTimeMillis();28 for (long i = 0; i < 500000; i++) {29 linkedlist.get(rand.nextInt(5000));30 }31 end = System.currentTimeMillis();32 System.out.println("linkedlist随机访问时间:"+(end - start));33 }34 }
程序运行结果为:
1 arrayList随机访问时间:202 linkedlist随机访问时间:2282
很明显ArrayList随即访问比LinkedList快的多,因为LinkedList是以链表的现实存储的。
- 【转载】List接口学习笔记(ArrayList和LinkedList)
- List接口、ArrayList类和LinkedList类 笔记
- list arraylist 和 linkedlist
- JavaSE入门学习35:Java集合框架之List接口及其实现类ArrayList和LinkedList
- 表中-list接口ArrayList类和LinkedList类
- java学习笔记6 ArrayList和LinkedList
- Java学习笔记-ArrayList(2)和LinkedList
- ArrayList、LinkedList学习笔记
- List的ArrayList和LinkedList
- List接口下 Arraylist Linkedlist Vector区别
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
- Arraylist LinkedList 区别 (读 <Java性能优化> 之List接口笔记 )
- 《Java程序性能优化》学习笔记之ArrayList和LinkedList
- List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源码解析
- List和ArrayList的区别(转载自他人的文章,作为笔记学习,呵呵)
- List 和 LinkedList/ArrayList 声明的区别
- List子类 ArrayList Vector 和 LinkedList
- list,arraylist和linkedlist的区别
- win7花生壳怎么用
- 软件开发的金字塔
- Windows 下 android自动打包 volley项目
- hdoj 4183 Pahom on Water 【基础最大流】
- sendip简单使用
- 【转载】List接口学习笔记(ArrayList和LinkedList)
- 点云相关学习总结一——估计一个点云的表面法线
- Ignatius and the Princess III
- cocos2dx中调用cocostudio中导出的序列帧动画
- Linux常用命令大全
- 线性规划以网络流24题の10 餐巾计划问题(费用流)
- The Balance
- OAuth介绍
- debian 修改软件源开non-free