java.util.LinkedList

LinkedList类是双向链表,链表中的每个节点都包含了对前一个和后一个元素的引用.


LinkedList的构造函数如下
1. public LinkedList():  ——生成空的链表
2. public LinkedList(Collection col):  复制构造函数

  • 获取链表的第一个和最后一个元素

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> lList = new LinkedList<String>();  
	    lList.add("1");  
	    lList.add("2");  
	    lList.add("3");  
	    lList.add("4");  
	    lList.add("5");  
	  
	    System.out.println("链表的第一个元素是 : " + lList.getFirst());  
	    System.out.println("链表最后一个元素是 : " + lList.getLast());  
	}
}

链表的第一个元素是 : 1
链表最后一个元素是 : 5
  • 从链表生成子表

package com.test.string;

import java.util.LinkedList;
import java.util.List;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> lList = new LinkedList<String>();  
	    lList.add("1");  
	    lList.add("2");  
	    lList.add("3");  
	    lList.add("4");  
	    lList.add("5"); 
	    
	    List<String> subl = lList.subList(1, 4);  
	    System.out.println(subl);  
	    lList.remove(2);  
	    System.out.println(lList); 
	}
}

[2, 3, 4]
[1, 2, 4, 5]
  • 添加元素:添加单个元素

如果不指定索引的话,元素将被添加到链表的最后.
public boolean add(Object element)
public boolean add(int index, Object element)
也可以把链表当初栈或者队列来处理:
public boolean addFirst(Object element)
public boolean addLast(Object element)
addLast()方法和不带索引的add()方法实现的效果一样.

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();  
	    list.add("A");  
	    list.add("B");  
	    list.add("C");  
	    list.add("D");  
	    list.addFirst("X");  
	    list.addLast("Z");  
	    System.out.println(list);
	}
}

[X, A, B, C, D, Z]
  • 删除元素

 

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();  
	    list.add("A");  
	    list.add("B");  
	    list.add("C");  
	    list.add("D");  
	    list.removeFirst();  
	    list.removeLast();  
	    System.out.println(list); 
	}
}

[B, C]
  • 实现栈效果

package com.test.string;

import java.util.LinkedList;

public class StackL {
	
	private LinkedList<Object> list = new LinkedList<Object>(); 
	
	public void push(Object v) {  
		list.addFirst(v);  
	}
	
	public Object top() {  
		return list.getFirst();  
	}
	
	public Object pop() {  
		return list.removeFirst();  
	}
}

package com.test.string;


public class TestLinkedList {

	public static void main(String[] args) {
		StackL stack = new StackL();  
	    for (int i = 0; i < 10; i++)  
	      stack.push(i);  
	    System.out.println(stack.top());  
	    System.out.println(stack.top());  
	    System.out.println(stack.pop());  
	    System.out.println(stack.pop());  
	    System.out.println(stack.pop());
	}
	
}

9
9
9
8
7
  • 实现队列效果

package com.test.string;


public class TestLinkedList {

	public static void main(String[] args) {
		Queue queue = new Queue();  
	    for (int i = 0; i < 10; i++)  
	      queue.put(Integer.toString(i));  
	    while (!queue.isEmpty())  
	      System.out.println(queue.get());  
	}
	
}

package com.test.string;

import java.util.LinkedList;

public class Queue {
	
	private LinkedList list = new LinkedList();

	public void put(Object v) {
		list.addFirst(v);
	}

	public Object get() {
		return list.removeLast();
	}

	public boolean isEmpty() {
		return list.isEmpty();
	}
}

0
1
2
3
4
5
6
7
8
9
  • LinkedList转换成ArrayList

ArrayList<String> arrayList = new ArrayList<String>(linkedList);  
    for (String s : arrayList) {  
      System.out.println("s = " + s);  
    }  
  • 删掉所有元素:清空LinkedList

lList.clear();
  • 删除列表的首位元素

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> lList = new LinkedList<String>();  
	    lList.add("1");  
	    lList.add("2");  
	    lList.add("3");  
	    lList.add("4");  
	    lList.add("5");  
	    System.out.println(lList);  
	        //元素在删除的时候,仍然可以获取到元素  
	    Object object = lList.removeFirst();  
	    System.out.println(object + " has been removed");  
	    System.out.println(lList);  
	    object = lList.removeLast();  
	    System.out.println(object + " has been removed");  
	    System.out.println(lList);  
	}
	
}

[1, 2, 3, 4, 5]
1 has been removed
[2, 3, 4, 5]
5 has been removed
[2, 3, 4]

范围删除列表元素


package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> lList = new LinkedList<String>();  
	    lList.add("1");  
	    lList.add("2");  
	    lList.add("3");  
	    lList.add("4");  
	    lList.add("5");  
	    System.out.println(lList);  
	    lList.subList(2, 5).clear();  
	    System.out.println(lList); 
	}
	
}

[1, 2, 3, 4, 5]
[1, 2]
  • 删除链表的特定元素

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> lList = new LinkedList<String>();  
	    lList.add("1");  
	    lList.add("2");  
	    lList.add("3");  
	    lList.add("4");  
	    lList.add("5");  
	    System.out.println(lList);  
	    System.out.println(lList.remove("2"));//删除元素值=2的元素  
	    System.out.println(lList);  
	    Object obj = lList.remove(2);  //删除index=2的元素,即第三个元素
	    System.out.println(obj + " 已经从链表删除");  
	    System.out.println(lList); 
	}
	
}

[1, 2, 3, 4, 5]
true
[1, 3, 4, 5]
4 已经从链表删除
[1, 3, 5]
  • 将LinkedList转换为数组,数组长度为0

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> theList = new LinkedList<String>();  
	    theList.add("A");  
	    theList.add("B");  
	    theList.add("C");  
	    theList.add("D");  
	    String[] my = theList.toArray(new String[0]); 
	    System.out.println(my.length);  
	    for (int i = 0; i < my.length; i++) {  
	      System.out.println(my[i]);  
	    }  
	}
	
}

4
A
B
C
D
  • 将LinkedList转换为数组,数组长度为链表长度

package com.test.string;

import java.util.LinkedList;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> theList = new LinkedList<String>();  
	    theList.add("A");  
	    theList.add("B");  
	    theList.add("C");  
	    theList.add("D");  
	    String[] my = theList.toArray(new String[theList.size()]);  
	    System.out.println(my.length);  
	    for (int i = 0; i < my.length; i++) {  
	      System.out.println(my[i]);  
	    }  
	}
	
}

4
A
B
C
D
  • 将LinkedList转换成ArrayList

package com.test.string;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class TestLinkedList {

	public static void main(String[] args) {
		LinkedList<String> myQueue = new LinkedList<String>();  
	    myQueue.add("A");  
	    myQueue.add("B");  
	    myQueue.add("C");  
	    myQueue.add("D");  
	    List<String> myList = new ArrayList<String>(myQueue);  
	    for (Object theFruit : myList)  
	      System.out.println(theFruit);
	}
	
}

A
B
C
D

代码来源:http://blog.csdn.net/i_lovefish/article/details/8042883

转载于:https://my.oschina.net/weaver/blog/697373

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值