java集合框架笔记(3)LinkedList

以下情况使用 ArrayList :

频繁访问列表中的某一个元素。
只需要在列表末尾进行添加和删除元素操作。


以下情况使用 LinkedList :

你需要通过循环迭代来访问列表中的某些元素。
需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。


LinkedList 继承了 AbstractSequentialList 类。

LinkedList 实现了 Queue 接口,可作为队列使用。

LinkedList 实现了 List 接口,可进行列表的相关操作。

LinkedList 实现了 Deque 接口,可作为队列使用。

LinkedList 实现了 Cloneable 接口,可实现克隆

LinkedList 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。


LinkedList 可以直接打印所有元素。

public class Test04 {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();
        list.add("hi");
        list.add("this");
        list.add("is");
        System.out.println(list);
    }
}

result

[hi, this, is]

可以直接操作队头队尾进行增删。

public class Test04 {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();
        list.add("hi");
        list.add("this");
        list.add("is");
        System.out.println(list);
        System.out.println(list.getFirst());
        System.out.println(list.getLast());
        list.addFirst("first");
        System.out.println(list);
        list.addLast("Last");
        System.out.println(list);
        list.removeFirst();
        System.out.println(list);
        list.removeLast();
        System.out.println(list);
    }
}
[hi, this, is]
hi
is
[first, hi, this, is]
[first, hi, this, is, Last]
[hi, this, is, Last]
[hi, this, is]

依然用get()获取下标元素。添加的add() 也可以用 offer() ,两个貌似一样offer() 也执行add(),jdk9。
poll 和 remove 作用一样;poll() 遇到空指针会返回null;remove()删除队头元素并返回,遇到空指针会异常。

返回元素一开始出现的下标/最后出现的下标。

System.out.println(list);
System.out.println(list.indexOf("hi"));
System.out.println(list.lastIndexOf("hi"));
[hi, this, is, hi]
0
3

获取队头元素peek() 或 element() 区别在于是否抛出异常;

System.out.println(list.peek());
list.clear();
System.out.println(list.peek());
System.out.println(list.element());
hi
null
Exception in thread "main" java.util.NoSuchElementException
	at java.base/java.util.LinkedList.getFirst(LinkedList.java:248)
	at java.base/java.util.LinkedList.element(LinkedList.java:667)
	at test.Test04.main(Test04.java:47)

注意 集合类需要继承 List 类才能使用迭代器父类方法 iterator()

List<String> list = new LinkedList<String>();
.........
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
       System.out.println(iterator.next());
   }
hi
this
is
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值