package com.company;
import java.util.Iterator;
import java.util.LinkedList;
public class TestLinkedList {
public static void main(String[] args) {
//新建链表,装的内容可以是任何包装类
LinkedList<Integer> list = new LinkedList<>();
//给链表赋值
list.add(5);//只能顺序插入
list.add(4);
list.add(3);
list.add(2);
list.addLast(1);//尾部值
list.addFirst(6);//头部值
//有了头尾后再插入值,新加的值就在尾部,前面尾部的值还是存在
list.add(7);
//打印链表
System.out.println("list内容如下:" + list);
//计算链表长度
int length = list.size();
System.out.println("list链表长度:" + length);
//判断链表中是否包含某个值
boolean isExist = list.contains(1);
System.out.println("链表中是否包含1 " + isExist);
//按索引取值,取第二个值
Integer value = list.get(1);
System.out.println("链表中的第二个值为:" + value);
//取特殊值,取头部值
Integer head = list.getFirst();
System.out.println("list的头部值为:" + head);
//取特殊值,取尾部值
Integer last = list.getLast();
System.out.println("list的尾部值为:" + last);
//不知道索引,也不知道值在头部和尾部,如何取值?
//删除:按索引删除
list.remove(0);//删除第一个值
System.out.println("删除第一个元素后。list内容为" + list);
//删除:按值删除-方法1
list.add(7);
list.add(7);
System.out.println("list的值为" + list);
//删除:按值删除-方法2
list.remove((Object) 7);//有多个重复值时,只能删除一个,没法把所有相同的值都删除
System.out.println("删除7后。list内容为" + list);
//删除:按值删除-方法3
while (list.contains(7)) {
list.remove((Object) 7);//循环删除相同的元素
}
System.out.println("删除所有的7后。list内容为" + list);
//删除:按值删除-方法4--更安全
list.add(7);
list.addFirst(7);
System.out.println("list的值为" + list);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next() == 7) {
iterator.remove();
}
}
System.out.println("删除所有的7后。list内容为" + list);
}
}
-----------------