一篇文章让你精通:java集合讲解(二,LinkList)

Posted 韶光不负

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇文章让你精通:java集合讲解(二,LinkList)相关的知识,希望对你有一定的参考价值。

学习完ArrayList,就准备准备学习它兄弟LinkList了,它们是兄弟所以说有很多的方法是相同的。这样的目的是方便程序员记住它们,下面就让我们来看看它吧!

​​​​​​​​​​​​​​​​​​​​​一篇文章让你精通:java集合讲解(二,ArrayList)

亲,可以先学习一下ArrayList再来比较它们区别

LinkList 

特点:采用双向链表的存储方式

优点:添加与删除元素时,效率高(前提是必须先低效率查询,如果插入与删除在头部或者尾部可以减少查询次数)

缺点:遍历元素与随机访问元素,效率低

注意:和ArrayList想比,不变的是方法名称与执行结果,变化的是底层的数据结构(数组为双向链表)与操作方式改变(如remove()方法:节点指向发生改变)

LinkList实现来List<>接口,还实现了Deque接口(说明LinkList,可以作为线性表,栈,队列来使用)。也说明方法比ArrayList的方法更多。

Linklist的方法

add()
 

末尾添加元素,
数组能自动装箱:就是数组封装。普通数据类型——>包装类
可以使用一个参数或者二个,一个时,添加元素,二个时,第一个参数:索引,第二个,添加元素
addAll(对象)
addAll(下标,对象)

复制添加对象全部元素,默认在后面添加

当有二个参数后,表示在下标后添加对象全部元素。

remove()当输入的是对象时,删除对象,当输入的是对下标,删除下标,
el1.removeAll(el2)在el1中删除el2中相同的元素。
list.retainAll(list2);在list中查找与list2相同的元素
get()获取指定索引,返回的是一个对象。
set(index,value)  二个参数,第一个为下标,第二个为修改值
clear()   清空数组
contains(value)判断是否存在value值,返回布尔值
indexOf(value)查找value的下标索引
isEmpty()判断数组是否为空。
size()查看数组中真实存储的元素个数。与数组的length()方法返回不同
toString()遍历数组


import java.util.LinkedList;


public class Test {
    public static void main(String[] args)  {
        LinkedList<Integer> list=new  LinkedList();

        //增加
        list.add(1);
        list.add(2);
        list.add(2,100);
        //list.addAll();

        //删除
        list.remove(1);
        list.clear();

        list.add(1);
        list.add(2);

        //查看
        list.indexOf(1);
        list.size();
        int ele=list.get(1);
        System.out.println(ele);
        //修改
        list.add(2,100);
        //toString方法,遍历数组
        System.out.println(list.toString());
        //方法1,for循环
        for (int i = 0; i <list.size() ; i++) {
            int elem2= (int) list.get(i);
            System.out.println(i+"是"+elem2);
        }
        //方法2,for-each循环,必须使用对象输出
        for (Object elem3:list){
            System.out.println(elem3);
        }
        

        //方法4,Lambda表达式+流程式编程(JDK1.8提供)
        list.forEach((i)-> System.out.println(i));
//      list.forEach(System.out::println); 第二种写法




    }


}

Linklist的特有方法
addFirst
头添加
addLast
尾添加
getFirst()
获取元素
removeFirst()
头删除
removeFirst()
取出集合中元素
removeLast()
取出集合中元素,只不过是倒序输出

 //添加方法--注意该方法为链表添加头结点,所以后面添加的为链表的头元素
        list.addFirst(20);
        list.addLast(30);


        //获取元素
        System.out.println(list.getFirst());

        //删除元素
        System.out.println(list.removeFirst());

        //取出LinkedList集合中所有元素
        while(!list.isEmpty()) {
            System.out.println(list.removeFirst());
            //link.removeLast()  倒序输出

        }

在什么情况下使用ArrayList与LinkList?

ArrayList:按照索引随机访问,遍历集合

LinkList:添加数据与删除数据多的情况下。

以上是关于一篇文章让你精通:java集合讲解(二,LinkList)的主要内容,如果未能解决你的问题,请参考以下文章

一篇文章让你精通:java集合讲解(二,ArrayList)

一篇文章让你精通:java集合讲解(八,集合的解析与总结)

一篇文章让你精通:java集合讲解(练习处理)

一篇文章让你精通:java集合讲解

一篇文章让你精通:java集合讲解(四,Set)

一篇文章让你精通:java集合讲解(六,Map)