真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java集合框架LinkedList詳解及實(shí)例

Java集合框架LinkedList詳解

成都創(chuàng)新互聯(lián)是專業(yè)的雙橋網(wǎng)站建設(shè)公司,雙橋接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行雙橋網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

LinkedList定義

package java.util;
public class LinkedList
 extends AbstractSequentialList
 implements List, Deque, Cloneable, java.io.Serializable{
 transient int size = 0;
 transient Node first;
 transient Node last;
}

LinkedList概述

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

 private static class Node {
  E item;
  Node next;
  Node prev;

  Node(Node prev, E element, Node next) {
   this.item = element;
   this.next = next;
   this.prev = prev;
  }
 }

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

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

 public E get(int index) {
  checkElementIndex(index);
  return node(index).item;
 }
 public E set(int index, E element) {
  checkElementIndex(index);
  Node x = node(index);
  E oldVal = x.item;
  x.item = element;
  return oldVal;
 }

 Node node(int index) {
  // assert isElementIndex(index);

  if (index < (size >> 1)) {
   Node x = first;
   for (int i = 0; i < index; i++)
    x = x.next;
   return x;
  } else {
   Node x = last;
   for (int i = size - 1; i > index; i--)
    x = x.prev;
   return x;
  }
 }

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

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

LinkedList用法

  簡(jiǎn)單舉個(gè)例子:

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

  運(yùn)行結(jié)果:

4
2
3
5
[4, 2, 3, 5]

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

subList的使用

 List 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 list2 = list.subList(3, 6);
  System.out.println(list2);
  list2.set(2, 50);

  System.out.println("============");
  System.out.println(list);
  System.out.println(list2);

  運(yùn)行結(jié)果:

[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)部引用的還是原來(lái)的鏈表,如果改變subList中的值,主list中的值也會(huì)跟著改變。

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


當(dāng)前標(biāo)題:Java集合框架LinkedList詳解及實(shí)例
文章URL:http://weahome.cn/article/poepps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部