激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

Java集合框架LinkedList詳解及實例

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

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

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以雙向鏈表實現,允許重復。(如下Node的實現)并保留頭指針和尾指針。

?
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>數組大小的一半,會從末尾移起)。

?
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;
 }
}

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

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

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);

  運行結果:

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

  LinkedList會保留插入數據的順序。

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);

  運行結果:

?
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]

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91九色国产视频 | 成人店女老板视频在线看 | 依人网站 | 操碰| 真人一级毛片免费 | 亚洲自拍第二页 | 欧美日韩高清不卡 | 亚洲啪啪| 国产精品麻豆一区二区三区 | 国产jjizz一区二区三区视频 | 国产一级毛片视频在线! | 一级免费黄视频 | 国产在线观看免费视频软件 | 91福利社在线| 欧美 日韩 亚洲 中文 | 9999精品| 国产一级一区二区三区 | 黄色成人av在线 | 激情小说激情电影 | asian超清日本肉体pics | 夜夜夜操操操 | 久久精品探花 | 久久久www成人免费精品 | 成人做爰www免费看 成人午夜视频免费看 | 国产99久久 | 精品成人在线观看 | 少妇色诱麻豆色哟哟 | 二级大黄大片高清在线视频 | 成人毛片视频在线观看 | 亚洲视频在线观看免费 | 欧美视频一区二区三区四区 | 久久久一区二区三区精品 | 欧美韩国日本在线 | 一本到免费视频 | 国产成人高潮免费观看精品 | 日本久久精品视频 | 午夜视频国产 | 暖暖免费观看高清完整版电影 | 亚州精品天堂中文字幕 | 91免费在线 | 一区二区三区在线视频观看58 |