Java LinkedList 链表


LinkedList

LinkedList 类扩展了 AbstractSequentialList 类并实现了 List 接口;
LinkedList 提供了一个连接列表的数据结构;


1. 构造方法

构造方法 说明
LinkedList() 建立一个空链接列表
LinkedList(Collection c) 建立一个由 c 中元素初始化的连接列表

2. API

LinkedList 除了继承 List 接口的方法外,又提供了如下方法:

类型 方法 说明
void addFirst(Object o) 将指定元素插入集合的开头
void addLast(Object o) 将指定元素插入集合的结尾
Object getFirst() 返回集合的第一个元素
Object getLast() 返回集合的最后一个元素
Object removeFirst() 移除并返回集合的第一个元素
Object removeLast() 移除并返回集合的最后一个元素

3. 类的使用

  • LinkedList 添加元素顺序和 add() 顺序有关;
  • LinkedList 没有同步方法,多线程同时访问一个 List,必须自己实现访问同步(即线程不安全);
import java.util.Iterator;
import java.util.LinkedList;

public class test {
    public static void main(String[] args) {
        LinkedList ll = new LinkedList();
        ll.add("apple");
        ll.add("banana");
        ll.addFirst("cat");
        ll.addLast("dog");
        Iterator it = ll.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + ", ");
        }
        System.out.println();
        System.out.println(ll.getFirst());
        System.out.println(ll.getLast());
        System.out.println(ll.removeFirst());
        System.out.println(ll.removeLast());
        ll.add(1, "ball");
        Object val = ll.get(2);
        ll.set(2, (String) val + " Updated");
        it = ll.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + ", ");
        }
    }
}
//输出:
//cat, apple, banana, dog, 
//cat
//dog
//cat
//dog
//apple, ball, banana Updated, 

4. 与数组的比较

  • 数组是连续的内存空间,查询快,添加和删除元素速度慢;
  • 链表的元素是不连续存放的,上一个元素记录下一个元素的地址,增删快,查询慢;
发布了59 篇原创文章 · 获赞 60 · 访问量 1584

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104509214
今日推荐