list中的linkedlist的用法

来源:互联网 发布:h5游戏渠道数据分享 编辑:程序博客网 时间:2024/05/21 17:23

list中的linkedlist的用法:

LinkedList是list接口的链表实现方式。

LinkedList类为在链表的开头及结尾获取(get)、删除(remove)、和插入(insert)元素提供了统一的命名方法,这些操作允许将ListedList用作堆栈、队列或双端队列。

此实现不是同步的。此类的iterator和listIterator方法返回的迭代器是快速失败的:在迭代器创建之后,如果从结构上对列表进行修改,除非通过迭代器本身的remove或add方法,其他任何时间任何方式的修改,迭代器都将抛出ConcurrentModificationException。因此面对并发的修改,迭代器很快就会完全失败,而不冒将来不确定的时间任意发生不确定行为的风险。

其构造方法有:

1、LinkedList();  构造一个空列表

2、LinkedList(c); 构造一个包含指定collection中的元素的列表,这些元素按其collection的迭代器返回的顺序排列。

package cn.list.demo;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args){LinkedList link1=new LinkedList();link1.addFirst("abc1");link1.addFirst("abc2");link1.addFirst("abc3");System.out.println(link1);LinkedList link2=new LinkedList();link2.addLast("abc4");link2.addLast("abc5");link2.addLast("abc6");System.out.println(link2);LinkedList link=new LinkedList(link1);link.add(link2);System.out.println(link);}}


其中封装的常用方法:

1、添加:

package cn.list.demo;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args){LinkedList link=new LinkedList();/* * 添加元素:三种方式 * 1、添加到头部    addFirst(e); * 2、添加到尾部    addLast(e);等同于add(e); * 3、添加到指定位置  add(index,e); */link.addFirst("abc1");link.addFirst("abc2");link.addFirst("abc3");link.addFirst("abc4");System.out.println(link);link.addLast("abc5");link.addLast("abc6");link.addLast("abc7");link.addLast("abc8");System.out.println(link);link.add("abc5");link.add("abc6");link.add("abc7");link.add("abc8");// 添加到下标为5,也即第六个位置link.add(5,"hello word");System.out.println(link);}}
2、删除:

   remove();  获取并移除此列表中的头元素。

   removeFirst();  移除并返回此列表的第一个元素。

   感觉这两个方法一样!

   removeLast();   移除并返回列表的最后一个元素。

   remove(int index); 移除此列表中指定位置处的元素。

   remove(Object o);  从此列表中移除首次出现的指定元素。

package cn.list.demo;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args){LinkedList link=new LinkedList();link.addFirst("abc1");link.addFirst("abc2");link.addFirst("abc3");link.addFirst("abc4");System.out.println(link);link.addLast("abc5");link.addLast("abc6");link.addLast("abc7");link.addLast("abc8");System.out.println(link);link.add("abc5");link.add("abc6");link.add("abc7");link.add("abc8");// 添加到下标为5,也即第六个位置link.add(5,"hello word");System.out.println(link);// 删除头元素System.out.println(link.remove());System.out.println(link);System.out.println(link.removeFirst());System.out.println(link);// 删除最后一个元素System.out.println(link.removeLast());System.out.println(link);// 删除指定位置的元素System.out.println(link.remove(3));System.out.println(link);// 删除首次出现的指定元素System.out.println(link.remove("abc7"));System.out.println(link);}}
3、获取元素:

   get();  获取列表中指定位置处的元素。

   getFirst();  获取列表中第一个元素。

   getLast();   获取列表中最后一个元素。

用法和删除方法的用法一样,get方法只获取元素,并不删除元素;而remove方法既获取该元素,又会将该元素删除。

4、把LinkedList当作堆栈使用时的一些常用方法:

   pop();   从此列表所表示的堆栈处弹出一个元素。

   push();  将元素推入此列表所表示的堆栈。

   clear(); 从列表中移除所有元素。

package cn.list.demo;import java.util.Iterator;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args){LinkedList link=new LinkedList();link.push("abc1");link.push("abc2");link.push("abc3");link.push("abc4");link.push("abc5");// 堆栈while(!link.isEmpty()){System.out.println(link.pop());}System.out.println(link);}}


5、用LinkedList模拟队列或堆栈的代码:

package cn.list.demo;import java.util.Iterator;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args){// 创建队列对象MyQueue myq=new MyQueue();// 给队列中添加元素myq.myAdd("abc1");myq.myAdd("abc2");myq.myAdd("abc3");myq.myAdd("abc4");myq.myAdd("abc5");while(!myq.isNull()){System.out.println(myq.myGet());}}}

package cn.list.demo;import java.util.LinkedList;/* * 自定义的一种队列数据结构的容器。 */public class MyQueue {private LinkedList link=null;public MyQueue(){link=new LinkedList();}/* * 往队列中添加元素 */public void myAdd(Object obj){// 调用LinkedList的方法link.addLast(obj);}/* * 获取队列中元素的方法 */public Object myGet(){return link.removeFirst();}/* * 队列是否为空 */public boolean isNull(){return link.isEmpty();}}


2 0