LinkedList与链表

1.链表的产生

由于顺序表ArrayList在有些操作时效率较低,如在任意位置插入或者删除一个元素,需要将该位置后面的所有元素进行前移或者后移,时间复杂度为O(n),效率比较低,所以ArrayList不适合做频繁任意位置插入的场景,此外,还有扩容机制导致的内存使用效率较低,因此,Java集合又引入了链表结构(LinkedList)。

2.链表的构造

链表是一种在物理存储结构上非连续的,数据元素的逻辑顺序是通过链表的引用链接次序实现的。

链表分为单项或双向,带头或不带头,循环或非循环,主要学习无头单向非循环链表和无头双向非循环链表

3.LinkedList的使用

3.1LinkedList的构造

3.2LinkedList常用方法

java 复制代码
  LinkedList<Integer> list1=new LinkedList<>();
        list1.add(60);
        list1.add(70);
        list1.add(80);
        list1.add(60);
        LinkedList<Integer> list=new LinkedList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);//[1, 2, 3, 4]
        list.add(0,0);//[0,1, 2, 3, 4]
        list.addAll(list1);//[0, 1, 2, 3, 4, 60, 70, 80, 60]
        list.remove(4);//[0, 1, 2, 3, 60, 70, 80, 60]
        list.get(0);//0
        list.set(0,1000);//[1000, 1, 2, 3, 60, 70, 80, 60]
        list.contains(10000);//true
        list.indexOf(60);//4
        list.lastIndexOf(60);//7
        list.subList(5,7);//[70,80]

3.3LinkedList的遍历

java 复制代码
 LinkedList<Integer> list1=new LinkedList<>();
        list1.add(60);
        list1.add(70);
        list1.add(80);
        list1.add(90);
        //for循环
        for (int i = 0; i < list1.size(); i++) {
            System.out.print(list1.get(i)+" ");
        }
        System.out.println();
        //foreach循环
        for (int x:list1) {
            System.out.print(x+" ");
        }
        System.out.println();
        //迭代器打印
        Iterator<Integer> integer=list1.iterator();
        while(integer.hasNext()){
            Integer i=integer.next();
            System.out.print(i+" ");
        }

4.ArrayList和LInkedLIst的区别

相关推荐
minji...2 小时前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
罗湖老棍子2 小时前
最大数(信息学奥赛一本通- P1549)(洛谷-P1198)
数据结构·算法·线段树·单点修改 区间求最大值
垫脚摸太阳4 小时前
第 36 场 蓝桥·算法挑战赛·百校联赛---赛后复盘
数据结构·c++·算法
Aaswk5 小时前
刷题笔记(回溯算法)
数据结构·c++·笔记·算法·leetcode·深度优先·剪枝
计算机安禾5 小时前
【数据结构与算法】第14篇:队列(一):循环队列(顺序存储
c语言·开发语言·数据结构·c++·算法·visual studio
Java_小白呀5 小时前
考研408数据结构(持续更新中...)
数据结构·考研
Frostnova丶5 小时前
(11)LeetCode 239. 滑动窗口最大值
数据结构·算法·leetcode
weixin_649555675 小时前
C语言程序设计第四版(何钦铭、颜晖)第十一章指针进阶之奇数值结点链表
c语言·开发语言·链表
励志的小陈7 小时前
数据结构Stack(C语言--用数组实现栈)
c语言·数据结构
宵时待雨7 小时前
C++笔记归纳17:哈希
数据结构·c++·笔记·算法·哈希算法