java链表

java.util.linkedlist:

LinkedList是Collection类的具体子类。
LinkedList对象允许我们分组类似或者不相似的对象类型。
创建链接列表只不过是创建java.util.linkedlist类的对象。

数据以节点的形式组织在LinkedList中。
该节点包含两个部分,它们是数据部分,地址部分。

数据部分始终提供我们想要表示的实际数据。
地址部分表示下一个节点的地址。

对于LinkedList中的最后一个节点,地址部分必须为null,指示链接列表的结尾。

链接列表API:

Java链表示例

import java.util.*;
class Linkedlist {
    public static void main(String[] args) {
        LinkedList ll = new LinkedList();
        System.out.println("CONTENTS OF l1 = " + ll);
        System.out.println("SIZE = " + ll.size());
        ll.add(new Integer(10));
        ll.add(new Integer(20));
        ll.add(new Integer(30));
        ll.add(new Integer(40));
        System.out.println("CONTENTS OF ll = " + ll);
        System.out.println("SIZE = " + ll.size());
        //retrieving data of ll using toArray () 
        Object obj[] = ll.toArray();
        int s = 0;
        for (int i = 0; i < obj.length; i++) {
            Integer io = (Integer) obj[i];
            int x = io.intValue();
            s = s + x;
        }
        System.out.println("SUM USING toArray () = " + s);
        ll.addFirst(new Integer(5));
        ll.addFirst(new Integer(6));
        System.out.println("CONTENTS OF ll = " + ll);
        System.out.println("SIZE = " + ll.size());
        //retrieving data of ll using iterator () 
        Iterator itr = ll.iterator();
        int s1 = 0;
        while (itr.hasNext()) {
            Object obj1 = itr.next();
            Integer io1 = (Integer) obj1;
            int x1 = io1.intValue();
            s1 = s1 + x1;
        }
        System.out.println("SUM USING iterator () = " + s1);
        //retrieving data of ll using ListIterator () 
        ListIterator litr = ll.listIterator();
        while (litr.hasNext()) {
            Object obj2 = litr.next();
            System.out.print(obj2 + ",");
        }
        System.out.println("\n");
        while (litr.hasPrevious()) {
            Object obj3 = litr.next();
            System.out.print(obj3 + ",");
        }
        System.out.println("\n");
        Object obj4 = ll.get(2);//random retrieval 
        System.out.println(obj4);
    }
};

实例方法:

Object getFirst (); - 1 
Object getLast (); - 2
public void addFirst (Object obj); - 3
public void addLast (Object obj); - 4
public void removeFirst (); - 5
public void removeLast (); - 6

方法1和2分别用于获得LinkedList的第一和最后一个物体。
方法3和4用于分别向LinkedList对象添加类似或者不同的对象。
方法5和6分别用于分别从LinkedList中移除第一和最后一个对象。

链表的缺点:

  • 为堆内存中节点的地址部分创建了添加内存空间。
  • 检索时间更多。
  • 由于我们正在浪费大部分内存空间进行寻址,所以性能将减少。

构造函数:

LinkedList ();
LinkedList (int size);
日期:2020-04-11 23:04:27 来源:oir作者:oir