JVAV:Linkedlist 常用方法和源码分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dian1pei2xiao3/article/details/84839704

LinkedList底层:双向链表

                       增加,删除效率高

                      数据可以重复存储

                       可以存储多个null值

                    插入数据的有序性

遍历方法通过迭代器遍历,双向遍历,其中除了提供hashnext()和next()方法外,还提供hashPrevious()和previous()方法,还可以通过迭代器对容器元素增加和设置,通过set()  add()方法。

   LinkedList<Integer> linkedList=new LinkedList<Integer>();
        //增加元素:add(),addFirst(),addLast()
        linkedList.add(150);//底层调用尾插
        linkedList.addFirst(1);//头插
        linkedList.addLast(3333);//尾插
        linkedList.offer(11);//增加元素,底层掉用add()方法
        linkedList.offerFirst(111);//头插,底层调用addFirst()方法
        linkedList.offerLast(33);//尾插,底层调用addLast()方法
        /**
         *
         * 删除元素:
         */
        linkedList.remove(12);//删除元素,按照索引删除
        linkedList.removeFirst();//头删
        linkedList.remove();//头删,底层调用头删
        Integer a=12;
        linkedList.remove(a);//按照元素删除,删除第一次数出现的改元素
        Integer poll = linkedList.poll();//删除第一个元素
        System.out.println(poll);
        Integer integer2 = linkedList.pollFirst();//删除第一个元素
        System.out.println(integer2);
        Integer integer3 = linkedList.pollLast();
        System.out.println(integer3);//删除尾部元素

        /**
         * 获取元素
         */
        linkedList.get(1);//获取元素,按照索引获取
        linkedList.getFirst();//获取第一个元素
        linkedList.getLast();//获取最后一个元素
        Integer element = linkedList.element();//或取第一个元素,底层调用getFirst()方法
        Integer peek = linkedList.peek();//获取头部元素
        System.out.println(peek);
        Integer integer = linkedList.peekFirst();//获取头部元素
        System.out.println(integer);
        Integer integer1 = linkedList.peekLast();
        System.out.println(integer1);//获取尾部元素
        /**
         *
         * 遍历方法:for循环
         * 增强for循环
         * 迭代器
         */
        for(int i=0;i<linkedList.size()-1;i++){
            System.out.println(linkedList.get(i));
        }

        for (Integer value:linkedList) {
            System.out.println(value);

        }
        Iterator<Integer> iterator = linkedList.iterator();
        while (iterator.hasNext()){
            Integer next = iterator.next();
            System.out.println(next);
        }
        linkedList.clear();//清空linkedlist

        /**
         * linkedlist中的迭代器可以双向遍历其中除了还有hashnext(),next()方法外,还有从尾部遍历的方法
         * hasPrevious()和previous()方法,也可以通过迭代器对容器中添加元素add(),set()
         */
        ListIterator<Integer> integerListIterator = linkedList.listIterator();
        integerListIterator.add(12);//尾插
        while (integerListIterator.hasNext()){
            Integer next = integerListIterator.next();
            System.out.println(next);
        }
//        可以双向遍历从尾部倒序遍历
      System.out.println("==============================");
        integerListIterator.set(18);//尾插
       while (integerListIterator.hasPrevious()){
           Integer previous = integerListIterator.previous();

           System.out.println(previous);
       }

        System.out.println("==============================");
        while (integerListIterator.hasNext()){
         Integer next2=  integerListIterator.next();
         System.out.println(next2);
        }

    }

猜你喜欢

转载自blog.csdn.net/Dian1pei2xiao3/article/details/84839704