List
存储的对象是有序的(集合中存储对象的顺序和使用add方法添加对象的顺序一致),存储的对象是可重复的。
List的特有的功能: 都是可以操作索引的功能。
-
增:
- void add(int index, E element )
- boolean addAll(int index, Collection<? extends E> c)
col.add("java"); col.add(1,"hello"); col.addAll(2,col2);
-
删
- E remove(int index)
返回被删除的对象
Object obj = col.remove(3);
- E remove(int index)
-
改
- E set(int index, E element)
修改指定索引上的元素
col.set(2,"bigdata");
- E set(int index, E element)
-
查
- E get(int index)
得到指定位置上的元素 - ListIterator listIterator()
返回此列表元素的列表迭代器(按适当顺序)。 - ListIterator listIterator(int index)
从指定元素开始迭代 - List subList(int fromIndex, int toIndex)
返回子List,不包括结束位置上的元素 - int indexOf(E element)
获取元素的索引 - int lastIndex0f(E element)
获取元素的最后一次出现的索引 - **void replaceAll(UnaryOperator operator) R apply(T t) **
替换功能
col.replaceAll(t->((String)t).concat("hehe"));
- void sort (Comparator comparator) int compare(T o1, T o2)
排序功能
col.sort((o1,o2)->((String)o2).length()-((String)o1).length());
- E get(int index)
ArrayList
- 后缀:List,说明存储的数据有序,可重复
- 前缀:Array,说明该集合在存储数据时底层数据结构是数组
数组的特点是便于查找,不便于添加和删除
Vector
- 线程安全的实现
- 该集合在存储数据时,底层数据结构是数组
遍历
Enumeration elements()
hasMoreElements() nextElement()
Vector v=new Vector();
v.add("java01");
v.add("java02");
Enumeration en = v.elements();
while(en.hasMoreElements()){
Object obj = en.nextElement();
System.out.println(obj);
}
LinkedList
-
后缀:List,说明存储的数据有序,可重复
-
前缀:Linked,说明该集合在存储数据时,底层数据结构是链表
链表的特点是便于添加和删除,不便于查找
单向链表:
双向链表:
方法
-
addFirst() addLast()
getFirst() getLast()
removeFirst() removeLast() -
jdk1.6以后
offerFirst() offerLast()
peekFirst() peekLast()
pollFirst() pollLast()
public static void main(String[] args) {
LinkedList list=new LinkedList();
list.addFirst("001");
list.addFirst("002");
list.addFirst("003");
while(!list.isEmpty())//删除所有节点
System.out.println(list.removeFirst());
//System.out.println(list.getFirst());//NoSuchElementException
//System.out.println(list.peekFirst()); //null 不会异常
//System.out.println(list.removeFirst());// 异常
System.out.println(list.pollFirst());//null 不会异常
}