一、介绍
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。链表可分为单向链表和双向链表。
LinkedList和ArrayList的区别
Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
二、添加元素
方法:add()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); System.out.println(list); }
运行结果:
[1, 2, 3]
三、获取元素
方法:get()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); String s1 = list.get(0); String s2 = list.get(1); String s3 = list.get(2); System.out.println(s1); System.out.println(s2); System.out.println(s3); }
运行结果:
1
2
3
四、迭代元素
方法:for foreach()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); for (int i = 0 ;i<list.size();i++){ System.out.println("普通for循环-----"+list.get(i)); } for (String s : list) { System.out.println("for循环-----"+s); } list.forEach(r->{ System.out.println("forEach-----"+r); }); }
运行结果:
普通for循环—–1
普通for循环—–2
普通for循环—–3
for循环—–1
for循环—–2
for循环—–3
forEach—–1
forEach—–2
forEach—–3
五、元素添加到头部
方法:addFirst(E e)
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); System.out.println("添加前---"+list); list.addFirst("4"); System.out.println("添加后---"+list); }
运行结果:
添加前—[1, 2, 3]
添加后—[4, 1, 2, 3]
六、元素添加到尾部
方法:addLast(E e)
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); System.out.println("添加前---"+list); list.addLast("4"); System.out.println("添加后---"+list); }
运行结果:
添加前—[1, 2, 3]
添加后—[1, 2, 3, 4]
七、清空链表
方法: clear()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); list.clear(); System.out.println(list); }
运行结果:
[ ]
八、删除指定位置的元素
方法: remove(int index)
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); System.out.println("删除前---"+list); list.remove(0); System.out.println("删除后---"+list); }
运行结果:
删除前—[1, 2, 3]
删除后—[2, 3]
九、查找指定元素从前往后第一次出现的索引
方法:indexOf()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("1"); list.add("2"); list.add("2"); list.add("3"); list.add("3"); list.add("3"); int i = list.indexOf("1"); System.out.println(i); }
运行结果:
0
十、克隆列表
方法:clone()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); System.out.println("创建的list-----"+list); Object clone = list.clone(); System.out.println("复制的list-----"+clone); }
运行结果:
创建的list—–[1, 2, 3]
复制的list—–[1, 2, 3]
十一、返回链表元素个数
方法:size()
代码:
public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("1"); list.add("2"); list.add("3"); int size = list.size(); System.out.println(size); }
运行结果:
3
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119905.html