Java_总结十四(集合——List接口——List中常用的两个实现类ArrayList、LinkedList)

一、List接口

  --实现List接口的集合类中的元素是有序(元素插入集合的顺序)的,且允许重复

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

 

  List接口比Collection接口中新增的几个实用方法:

    --public Object get(int index)  返回列表中指定位置的元素

    --public void add(int index, Object element)  在列表的指定位置插入指定元素.将当前处于该位置的元素(如果有的话)和所有后续元素向右移动

    --public Object set(int index, Object element)  用指定元素替换列表中指定位置的元素,返回替换出来的元素

    --public Object remove(int index)       移除列表中指定位置的元素

    --List subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。

    --int indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回-1

 

二、ArrayList集合类

  ArrayList是使用数组结构实现的List集合

  优点: 对于使用索引取出元素有较好的效率(随机访问) 它使用索引来快速定位对象

  缺点: 元素做删除或插入速度较慢 因为使用了数组,需要移动后面的元素以调整索引顺序。

import java.util.ArrayList;
import java.util.List;

public class Test09 {

    public static void main(String[] args) {
        //创建一个ArrayList集合类,有泛型就限定集合中插入元素的类型;如果没有泛型,则可以插入任意类型元素,混合插入
        ArrayList<Integer> list = new ArrayList<>();
        list.add(3);
        list.add(1);
        list.add(4);
        list.add(6);
        //获取指定位置的元素,从位置下标0开始
        System.out.println("位置下标2的元素是---" + list.get(2));
        //向指定位置插入指定元素
        list.add(2, 5);
        System.out.println("向位置下标2插入元素5---" + list);
        //用指定元素替换指定位置的元素,返回被替换的元素
        int result = list.set(4, 7);
        System.out.println("被替换的元素---" + result + "---" + list);
        //删除指定位置的元素
        list.remove(4);
        System.out.println("删除元素后的集合---" + list);
        //返回指定区域的元素,范围是左开右闭
        List list2 = list.subList(1, 4);
        System.out.println("1-4区域的元素---" + list2);
        //返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回-1
        int index = list.indexOf(3);
        System.out.println("3的下标是---" + index);
        
    }
    
}

  结果:

 

位置下标2的元素是---4
向位置下标2插入元素5---[3, 1, 5, 4, 6]
被替换的元素---6---[3, 1, 5, 4, 7]
删除元素后的集合---[3, 1, 5, 4]
1-4区域的元素---[1, 5, 4]
3的下标是---0

 

 

 

三、LinkedList集合类

  --LinkedList是使用双向链表实现的集合。

  --LinkedList新增了一些插入、删除的方法。

  优点: 对频繁的插入或删除元素有较好的效率 适合实现栈(Stack)和队列(Queue)

  

  常用的方法:

    --void addFirst(E e) 将指定元素插入此双端队列的开头。

    --void addLast(E e) 将指定元素添加到此列表的结尾。等效于add(E e)

    --E getFirst() 返回此列表的第一个元素,等效于element(),只看不动.

    --E getLast() 返回此列表的最后一个元素。只看不动.

  模拟栈的结构:后进先出:LastInFirstOut:LIFO 

    --E pop()从此列表所表示的堆栈处弹出一个元素。移除并返回此列表的第一个元素,等效于 removeFirst()

    --void push(E e) 将元素推入此列表所表示的堆栈。将该元素插入此列表的开头。 此方法等效于 addFirst(E)

  模拟队列的功能:先进先出:FirstInFirstOut:FIFO

    --public boolean offer(E e) 将指定元素添加到此列表的末尾(最后一个元素)等效于offerLast()

    --public E poll() 获取并移除此列表的头(第一个元素)等效于 pollFirst()

    --E peek()获取,但不移除此双端队列所表示的队列的头部(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回 null。 此方法等效于 peekFirst()。

import java.util.LinkedList;

public class Test10 {

    public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList<>();
        //添加一个元素
        linkedList.add(1);
        //插入到双端队列的开头
        linkedList.addFirst(2);
        //插入到双端队列的结尾
        linkedList.addLast(3);
        System.out.println(linkedList);
    }
}

 

posted @ 2017-05-15 19:05  Java_皮卡丘漏电  阅读(303)  评论(0编辑  收藏  举报