一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java集合框架LinkedList詳解及實例

Java集合框架LinkedList詳解及實例

2020-09-08 10:39Java之家 Java教程

這篇文章主要介紹了Java集合框架LinkedList詳解及實例的相關(guān)資料,從定義,概述,用法進行介紹,需要的朋友可以參考下

Java集合框架LinkedList詳解

LinkedList定義

?
1
2
3
4
5
6
7
8
package java.util;
public class LinkedList<E>
 extends AbstractSequentialList<E>
 implements List<E>, Deque<E>, Cloneable, java.io.Serializable{
 transient int size = 0;
 transient Node<E> first;
 transient Node<E> last;
}

LinkedList概述

  LinkedList以雙向鏈表實現(xiàn),允許重復。(如下Node的實現(xiàn))并保留頭指針和尾指針。

?
1
2
3
4
5
6
7
8
9
10
11
private static class Node<E> {
 E item;
 Node<E> next;
 Node<E> prev;
 
 Node(Node<E> prev, E element, Node<E> next) {
  this.item = element;
  this.next = next;
  this.prev = prev;
 }
}

  鏈表無容量限制,但雙向鏈表本身使用了更多空間,也需要額外的鏈表指針操作。

  按下標訪問元素—get(i)/set(i,e) 要悲劇的遍歷鏈表將指針移動到位(如果i>數(shù)組大小的一半,會從末尾移起)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public E get(int index) {
 checkElementIndex(index);
 return node(index).item;
}
public E set(int index, E element) {
 checkElementIndex(index);
 Node<E> x = node(index);
 E oldVal = x.item;
 x.item = element;
 return oldVal;
}
 
Node<E> node(int index) {
 // assert isElementIndex(index);
 
 if (index < (size >> 1)) {
  Node<E> x = first;
  for (int i = 0; i < index; i++)
   x = x.next;
  return x;
 } else {
  Node<E> x = last;
  for (int i = size - 1; i > index; i--)
   x = x.prev;
  return x;
 }
}

  插入、刪除元素時修改前后節(jié)點的指針即可,但還是要遍歷部分鏈表的指針才能移動到下標所指的位置,只有在鏈表兩頭的操作—add(), addFirst(),removeLast()或用iterator()上的remove()能省掉指針的移動。

  非線程安全,可以調(diào)用Collections.synchronizedList(new LinkedList<>());實現(xiàn)。

LinkedList用法

  簡單舉個例子:

?
1
2
3
4
5
6
7
8
9
List<Integer> list = new LinkedList<>();
list.add(4);
list.add(2);
list.add(3);
list.add(5);
 
for(int i:list)
 System.out.println(i);
System.out.println(list);

  運行結(jié)果:

?
1
2
3
4
5
4
2
3
5
[4, 2, 3, 5]

  LinkedList會保留插入數(shù)據(jù)的順序。

subList的使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
List<Integer> list = new LinkedList<>();
 list.add(4);
 list.add(2);
 list.add(3);
 list.add(5);
 list.add(7);
 list.add(5);
 list.add(11);
 list.add(14);
 list.add(10);
 list.add(9);
 System.out.println(list);
 List<Integer> list2 = list.subList(3, 6);
 System.out.println(list2);
 list2.set(2, 50);
 
 System.out.println("============");
 System.out.println(list);
 System.out.println(list2);

  運行結(jié)果:

?
1
2
3
4
5
[4, 2, 3, 5, 7, 5, 11, 14, 10, 9]
[5, 7, 5]
============
[4, 2, 3, 5, 7, 50, 11, 14, 10, 9]
[5, 7, 50]

  調(diào)用LinkedList中的subList方法生成的新的list,內(nèi)部引用的還是原來的鏈表,如果改變subList中的值,主list中的值也會跟著改變。

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/u013256816/article/details/50916689

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品免费_区二区三区观看 | 手机看片国产免费现在观看 | 国产探花在线视频 | 欧美高清milf在线播放 | 天天干夜夜添 | 香蕉久久久久 | 单亲乱l仑在线观看免费观看 | 国产欧美一区二区三区久久 | 日本中文字幕一区二区高清在线 | 末代皇帝无删减版在线观看 | 欧美干b视频 | 动漫人物差差差动漫人物免费观看 | caoporn超碰最新地址进入 | 国产精品不卡高清在线观看 | 99久久伊人一区二区yy5099 | 日日视频 | 精品视频一区二区三区 | 2021日本三级理论影院 | 成人国产精品视频 | 久9青青cao精品视频在线 | 日本人成动漫网站在线观看 | 亚洲 色 欧美 爱 视频 日韩 | 爱草影院 | 国产精品拍拍拍福利在线观看 | 精品久久99麻豆蜜桃666 | 爽好紧别夹宝贝叫大声点护士 | 精品无码国产污污污免费网站2 | 国产成人手机在线好好热 | 亚洲精品无码不卡 | 9966久久精品免费看国产 | 青青青在线视频 | 欧美一区二区三区免费不卡 | 成人永久免费 | 亚洲国产日韩欧美在线vip1区 | 精品久久久久久久久免费影院 | www.亚洲色图 | 国产高清精品自在久久 | 精品国产一区二区三区久久影院 | 国语自产拍在线播放不卡 | 国内精品久久久久影院男同志 | 男男同gayxxx |