java中的单向链表和双向链表,jdk双向链表
00-1010一、LinkedList II介绍。LinkedList的使用
00-10101链表是Java集合框架中的一个重要实现。它的底层采用的是双链表结构,没有初始化大小,保持在前面或者后面加就好了。由于是基于链表的实现,所以在存储元素的过程中,不需要像ArrayList那样扩大容量。2 2linkedlist存储元素的节点需要额外的空间来存储前面和后面的引用。3LinkedList在链表的头部和尾部插入效率很高,但是在指定位置插入时效率一般。原因是插入需要定位在指定位置的节点的时间复杂度为O(N)。和4 ArrayList一样,LinkedList也支持空值和重复值。LinkedList也是非线程安全的集合类。5 LinkedList实现了两个接口,List和dequee,所以LinkedList有两个方法,一个是List接口的方法,一个是dequee接口的方法。6 LinkedList是一个实现dequee的dequee,所以LinkedList既可以用作队列,也可以用作堆栈。使用LinkedList作为栈时,使用pop()、push()和peek(),需要注意的是LinkedList的头是栈顶,链表的尾是栈底。7慢随机存取,快插入快删除。
目录
导入Java . util . iterator;导入Java . util . deque;导入Java . util . linked list;导入Java . util . queue;公共类linked list demo { public static void main(String[]args){ linked show();system . out . println(-);linked deque();system . out . println(-);linked listpop();} public static void linked show(){//创建队列queue integer queue=new linked list();//添加元素queue . Add(1);queue . offer(22);for(Integer Integer : queue){ system . out . println(验证 queue: integer 的add()和offer());}//获取但不移除这个队列整数的头a=queue . peek();//输出得到的元素,打印出元素的长度。核实一下长度,看看有没有变化。system . out . println( queue . peek(): a ,最后一个长度为: queue . size());//获取并移除此队列的头Integer bin teger=queue . poll();//输出得到的元素,打印出元素的长度。核实一下长度,看看有没有变化。system . out . println( queue . poll(): bin teger ,后跟: queue . size()));} public static void linked deque(){ DequeInteger deque=new linked list();//添加元素deque . Add(3);//在第一个位置添加元素deque . offer first(5);//在最后一个位置添加元素deque . offer last(7);for(integer integer 3360 deque){ system . out . println( deque新增验证: integer );}//取出不移除元素Integer K Integer=deque . peek first();integer min teger=deque . peek last();系统输出打印
ln("deque.peek():" + kInteger + ">>>>" + mInteger + ",后长度为:" + deque.size()); // 取出并移除元素方法 Integer kInteger2 = deque.pollFirst(); Integer mInteger2 = deque.pollLast(); System.out.println("deque.poll():" + kInteger2 + ">>>>" + mInteger2 + ",后长度为:" + deque.size()); } public static void linkedListPop() { // 创建一个linkedlist集合 LinkedList<Integer> linkedList = new LinkedList<>(); // 添加元素 linkedList.push(9); linkedList.push(7); linkedList.push(5); linkedList.push(3); linkedList.push(1); for (Integer integer : linkedList) { System.out.println("linkedList.push():" + integer); } // 使用迭代器进行正向输出 Iterator<Integer> inIterator = linkedList.iterator(); while (inIterator.hasNext()) { Integer integer = inIterator.next(); System.out.println(integer); } System.out.println("-------分割线-------"); // 使用迭代器反向输出结果 Iterator<Integer> inIterator1 = linkedList.descendingIterator(); while (inIterator1.hasNext()) { Integer integer = inIterator1.next(); System.out.println(integer); } System.out.println("-------分割线-------"); // 使用for循环进行输出元素并移除 for (int i = 0; i <= 4; i++) { Integer result = linkedList.pop(); System.out.println("linkedList.pop():" + result + ">------<" + ",后长度为:" + linkedList.size()); } }}输出如下:
queue的add()和offer()验证:1queue的add()和offer()验证:22queue.peek():1,后长度为:2queue.poll():1,后长度为:1>----------一&&&二----------<deque新增验证:5deque新增验证:3deque新增验证:7deque.peek():5>>>>7,后长度为:3deque.poll():5>>>>7,后长度为:1>----------二&&&三----------<linkedList.push():1linkedList.push():3linkedList.push():5linkedList.push():7linkedList.push():913579-------分割线-------97531-------分割线-------linkedList.pop():1>------<,后长度为:4linkedList.pop():3>------<,后长度为:3linkedList.pop():5>------<,后长度为:2linkedList.pop():7>------<,后长度为:1linkedList.pop():9>------<,后长度为:0
Process finished with exit code 0
到此这篇关于Java实现双端链表LinkedList的文章就介绍到这了,更多相关Java 双端链表LinkedList内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。