20151117 List集合+ArrayList类+LinkedList类

原创 2015年11月17日 20:25:02

List集合为列表类型,主要特征是以线性方式存储对象。List包括List接口以及List接口的所有实现类,List接口实现了Collection接口,List接口的常用实现类包括ArrayList类和LinkedList类。

1.1 List的用法

常用方法:
- add(int index, Object obj):向集合的指定索引位置添加对象,其他对象的索引位置相对后移一位,索引位置从0开始。
- addAll(int index, Collection coll):向集合的指定索引位置添加指定集合中的所有对象。
- remove(int index):清除集合中指定索引位置的对象。
- set(int index, Object obj):将集合中指定索引位置的对象修改为指定的对象。
- get(int index):获取集合中指定索引位置的对象。
- indexOf(Object obj):获取集合中指定对象的索引,当存在多个时,返回第一个的索引位置,当不存在时,返回-1。
- lastIndexOf(Object obj):获取集合中指定对象的索引,当存在多个时,返回最后一个的索引位置,当不存在时,返回-1。
- listIterator():获取一个包含所有对象的ListIterator型实例。
- listIterator(int index):获取一个包含从指定索引位置到最后的ListIterator型实例。
- subList(int fromIndex, int toIndex):截取从起始索引位置fromIndex(包含)到终止索引位置toIndex(不包含)的对象,重新生成一个List集合并返回。

1.2 ArrayList类

ArrayList类实现了List接口,采用数组结构保存对象。优点是便于对集合进行快速的随机访问,缺点是向指定索引位置插入对象和删除对象的速度较慢。
【例】编写一个模仿经常需要随机访问集合中对象的例子。

public static void main(String[] args){
    String a = "A", b = "B", c = "C", d = "D", e = "E";
    List<String> list = new ArrayList<String>();
    list.add(a);
    list.add(b);
    list.add(c);
    list.add(d);
    list.add(e);
    System.out.println(list.get((int)(Math.random() * 5)));
}

控制台输出
在编写该例子时,用到了java.lang.Math类的random()方法,通过该方法可以得到一个小于1的的double型随机数,将该随机数乘以5后再强制转换成整数,可得到一个0~4的整数。

1.3 LinkedList

LinkedList类实现了List接口,采用链表结构保存对象。优点是便于向集合中插入和删除对象,缺点是随机访问对象速度较慢。
LinkedList类在List接口的基础之上增加的常用方法:
- addFirst(Object obj):将指定对象插入到列表的开头。
- addLast(Object obj):将指定对象插入到列表的截尾。
- getFirst():获得列表开头的对象。
- getLast():获得列表结尾的对象。
- removeFirst():移除列表开头的对象。
- removeLast() :移除列表结尾的对象。
【例】使用LinkedList类。

public static void main(String[] args){
    String a = "A", b = "B", c = "C", test = "test";
    LinkedList<String> list = new LinedLis<String>();
    list.add(a);
    list.add(b);
    list.add(c);
    System.out.println(list.getFirst());
    list.addFirst(test);
    System.out.println(list.getFirst());
    list.removeFirst();
    System.out.println(list.getFirst());
}

控制台输出

JavaSE入门学习35:Java集合框架之List接口及其实现类ArrayList和LinkedList

一List接口概述        List接口是Collection接口的子接口,实现List接口的集合类中的元素是有顺序的,而且可以重复,被称为序列。        List集合中的元素都对应一个整...
  • erlian1992
  • erlian1992
  • 2016年05月02日 17:01
  • 3479

java中的ArrayList和LinkedList的二分查找速度比

java中的ArrayList和LinkedList的二分查找速度比
  • o9109003234
  • o9109003234
  • 2013年11月26日 22:21
  • 5932

java List 的两种常用实现类ArrayList和linkedList

LinkedList类 LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作...
  • linysheart
  • linysheart
  • 2015年01月17日 09:18
  • 2456

java List集合记录 ArrayList和LinkedList的区别

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于元素的查找,ArrayList觉得优于LinkedList,因为LinkedList要移动指针...
  • buzaiguihun
  • buzaiguihun
  • 2016年07月04日 23:22
  • 797

java集合Collection的List ArrayList LinkedList 区别

先说结论: 1、List的特点:线性顺序存储元素、元素可重复、可以存放null、可查找。 2、ArrayList(数组,中间插入删除慢、按位置查找快)、LinkedList(链表,中间插入删除快、按位...
  • escore
  • escore
  • 2017年06月23日 08:49
  • 258

[Java]ArrayList与LinkedList的模拟实现

Java中的List继承自Collection接口。List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问L...
  • CristianoJason
  • CristianoJason
  • 2016年05月25日 21:22
  • 3781

C#相关概念(ArrayList,List,LinkedList,Dictionary、委托和事件、接口和抽象类)

在平时的项目中,许多东西都是用到了才看,甚至是只用不看。对下面几个知识点进行总结,加深自己对C#的理解。 1.Array,ArrayList,List,LinkedList,Queue,Stack...
  • wzy0754
  • wzy0754
  • 2017年03月28日 19:48
  • 761

java-----容器类总结之ArrayList与LinkedList的区别

我们都知道java中关于List的实现有两种方式:ArrayList与LinkedList,那么今天我们来看看两者在使用过程中的一些注意事项;        首先来看看两者的类结构图:...
  • hzw19920329
  • hzw19920329
  • 2016年07月11日 11:27
  • 3871

数据结构:ArrayList、Vector、LinkedList和HashMap、HashTable、LinkedHashMap、TreeMap

一、ArrayList、Vector、LinkedList ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,二者都允许直接序号索引元素,但...
  • a416090287
  • a416090287
  • 2013年05月31日 21:43
  • 2529

Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度

一般大家都知道ArrayList和LinkedList的大致区别:       1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。       2.对于...
  • followMyInclinations
  • followMyInclinations
  • 2016年05月08日 19:52
  • 2926
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:20151117 List集合+ArrayList类+LinkedList类
举报原因:
原因补充:

(最多只允许输入30个字)