1、特点
元素有序(元素的存储和取出顺序一致)可重复
2、List<E> 特有功能
void add(int index, E e):在列表指定位置插入指定元素
void addAll(int index, Collection<? extends E> c):将 c 中所有元素插入到集合的指定位置
E get(int index):返回列表中指定位置的元素
int indexOf(Object o):返回指定元素在列表中第一次出现的位置,如果列表中不存在该元素,则返回 -1
int lastIndexOf(Object o):返回指定元素在列表中最后一次出现的位置,如果列表中不存在该元素,则返回 -1
ListIterator<E> listIterator():返回该列表的迭代器
ListIterator<E> listIterator(int index):从指定位置返回该列表的迭代器
E remove(int index):删除列表中指定位置的元素
E set(int index, E e):用指定元素替换列表中指定位置的元素
List<E> subList(int fromIndex, int toIndex):返回列表中从 fromIndex(包括)到 toIndex(不包括)范围内的元素
3、遍历方式
(1) 迭代器
继承 Collection 的迭代器
public class ListDemo
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("HTML");
list.add("C#");
list.add("Android");
Iterator<String> it = list.iterator();
while(it.hasNext())
{
String str = it.next();
System.out.println(str);
}
}
}
List 特有的迭代器
public class ListDemo
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("HTML");
list.add("C#");
list.add("Android");
ListIterator<String> lit = list.listIterator();
while(lit.hasNext())
{
String str = lit.next();
System.out.println(str);
}
}
}
(2) foreach
public class ListDemo
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("HTML");
list.add("C#");
list.add("Android");
for(String str : list)
{
System.out.println(str);
}
}
}
(3) 普通 for 搭配 E get(int index)
public class ListDemo
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("HTML");
list.add("C#");
list.add("Android");
for(int i = 0; i < list.size(); i++)
{
String str = list.get(i);
System.out.println(str);
}
}
}
4、子类极其特性
(1) ArrayList<E>
特点
底层是数据结构是数组,查询快,增删慢;线程不安全,效率高。
(2) Vector<E>
特点
底层是数据结构是数组,查询快,增删慢;线程安全,效率低。
特有方法
public void addElement(E e):添加元素
public E elementAt(int index):根据索引值获取元素
public Enumeration<E> elements():获取枚举,功能和迭代器类似
特有遍历方式
public class ListDemo
{
public static void main(String[] args)
{
Vector<String> vt = new Vector<String>();
vt.add("Java");
vt.add("HTML");
vt.add("C#");
vt.add("Android");
// Vector 特有遍历方式一
Enumeration<String> em = vt.elements();
while(em.hasMoreElements())
{
String str = em.nextElement();
System.out.println(str);
}
// Vector 特有遍历方式二
for(int i = 0; i < vt.size(); i++)
{
String str = vt.elementAt(i);
System.out.println(str);
}
}
}
(3) LinkedList<E>
特点
底层数据结构是链表,查询慢,增删快;线程不安全,效率高
特有方法
public void addFirst(E e):在列表开头添加元素
public void addLast(E e):在列表末尾添加元素
public void getFirst():获取列表开头元素
public void getLast():获取列表末尾元素
public E removeFirst():移除列表开头元素
public E removeLast():移除列表末尾元素
更多请查阅 API