# LinkedList

## LinkedList 用作 List

List 的创建: List<数据类型> 变量名 = new LinkedList<>();

Java 中的链表特性通常不会直接暴露给用户, 而是通过 List 这个接口来对外展示的, 所以创建链表时使用List 打头，new 的时候才展现出这个 List 底层是由 LinkedList 实现的。

```java
List<Integer> ls=new LinkedList<>();
```

链表常用的方法有 add, set, remove, contains, isEmpty, size 等

```java
List<Integer> ls=new LinkedList<>();

ls.add(2);
ls.add(3);
ls.add(4);
ls.add(0,1);

System.out.println(ls);//[1, 2, 3, 4]

System.out.println(ls.get(0));// 1

ls.set(0,-1);
System.out.println(ls);//[-1, 2, 3, 4]

ls.remove(3);
System.out.println(ls);//[-1, 2, 3]

if (ls.contains(3)){
    System.out.println("链表含有 3");
}

if (ls.isEmpty()){
    System.out.println("链表含为空");
}else {
    System.out.println("链表不为空");
}

System.out.println("链表长度: "+ls.size());
```

## LinkedList 用作 Queue

LinkedList 的创建: List<数据类型> 变量名 = new LinkedList<>();

Java 中的链表特性通常不会直接暴露给用户, 而是通过 Queue 这个接口来对外展示的, 所以创建链表时使用Queue打头，new 的时候才展现出这个Queue 底层是由 LinkedList 实现的。

用作 Queue  常用方法有  add,peek, poll, contains, isEmpty, size 等

```java
Queue<Integer> queue =new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);

System.out.println(queue);// 输出  [1, 2, 3]

//获取队首
System.out.println(queue.peek());//输出 1

//取出队首
System.out.println(queue.poll());//输出 1
 
if (queue.contains(3)){
    System.out.println("队列含有 3");//输出 队列含有 3
}

if (queue.isEmpty()){
    System.out.println("队列为空");
 }else {
     System.out.println("队列不为空");//输出 队列不为空
 }

System.out.println("队列长度: "+queue.size());//输出 队列长度: 2
```

更多关于 LinkedList  的 API 可以访问 [Java 官方文档](https://docs.oracle.com/javase/8/docs/api/)

关于LinkedList 底层实现细节, 可以访问我的 github 仓库
