java集合专题2:List接口实现–java集合详解

一、List接口概述

Java中数组用来存储数据的局限性

List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。

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

JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。

二、List接口常用方法

List 集合里添加了一些根据索引来操作集合元素的方法

void add(int index, Object ele)

boolean addAll(int index, Collection eles)

Object get(int index)

int indexOf(Object obj)

int lastIndexOf(Object obj)

Object remove(int index)

Object set(int index, Object ele)

List subList(int fromIndex, int toIndex)

三、List接口实现类之一:ArrayList()(常用)

ArrayList 是 List 接口的典型实现类

本质上,ArrayList是对象引用的一个变长数组

ArrayList 是线程不安全的,而 Vector 是线程安全的,即使为保证 List 集合线程安全,也不推荐使用Vector

Arrays.asList(…) 方法返回的 List 集合既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…)  返回值是一个固定长度的 List 集合

 
  1. @Test  
  2.     public void testArrayList(){  
  3.         @SuppressWarnings("rawtypes")  
  4.         List list = new ArrayList();  
  5.         list.add(123);  
  6.         list.add(456);  
  7.         list.add(new String("AA"));  
  8.         list.add(new String("GG"));  
  9.         System.out.println(list);  
  10.         list.add(0555);  
  11.         System.out.println(list);  
  12.         Object obj = list.get(0);  
  13.         System.out.println(obj);  
  14.         list.remove(0);  
  15.         System.out.println(list.get(0));  
  16.         list.set(0111);  
  17.         System.out.println(list.get(0));  
  18.     }  

四、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()

六、ListIterator接口(了解)

List 额外提供了一个 listIterator() 方法,该方法返回一个 ListIterator 对象, ListIterator 接口继承了 Iterator 接口,提供了专门操作 List 的方法:

void add()

boolean hasPrevious()

Object previous()

Boolean hasNext()

Object next()

七、Iterator和ListIterator主要区别(了解)

1、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

2、ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator 没有此功能。

3、ListIterator有add()方法,可以向List中插入对象,而Iterator不能。

4、都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。

weinxin
我的微信
有问题微信找我
DannyWu

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: