Java基础 第三节 第十二课
【摘要】
List 的子类
ArrayList 集合LinkedList 集合
ArrayList 集合
java.util.ArrayList集合数据存储的结构是数组结构. 元素增删慢, 查找块,...
ArrayList 集合
java.util.ArrayList
集合数据存储的结构是数组结构. 元素增删慢, 查找块, 由于日常开发中使用多的功能为查询数据, 遍历数据. 所以ArrayList
是最常用的集合.
许多程序员开发时非常随意地使用ArrayList
完成任何需求, 并不严谨, 这种用法是不提倡的.
LinkedList 集合
java.util.LinkedList
集合数据存储的结构是链表结构. 方便元素添加, 删除集合.
LinkedLis t是一个双向链表是什么样子的呢, 请看下图:
实际开发中对一个集合元素的添加与删除经常涉及首位操作, 而 LinkedList 提供了大量的首位操作的方法. 这些方法我们作为了解即可:
- public void addFirst(E e): 将指定元素插入此列表的开头
- public void addLast(E e): 将指定元素添加到此列表的结尾
- public E getFirst(): 返回此列表的第一个元素
- public E getLast(): 返回此列表的最后一个元素
- public E removeFirst(): 移除并返回此列表的第一个元素
- public E removeLast(): 移除并返回此列表的最后一个元素
- public E pop(): 从此列表所表示的堆栈处弹出一个元素
- public void push(E e): 将元素推入此列表所表示的堆栈
- public boolean isEmpty(): 如果列表不包含元素, 则返回 true
LinkedList 是 List 的子类, List 中的方法 LinkedList 都是可以使用, 这里就不做详细介绍, 我们只需要了解 LinkedList 的特有方法即可. 在开发时, LinkedList 集合也可以作为堆栈, 队列的结构使用. (可以参考我的 Pyhton 数据结构 专栏)
发方演示:
public class Test38 {
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
// 添加元素
linkedList.addFirst("abc1");
linkedList.addFirst("abc2");
linkedList.addFirst("abc3");
System.out.println(linkedList);
System.out.println("========================");
// 获取元素
System.out.println(linkedList.getFirst());
System.out.println(linkedList.getLast());
System.out.println("========================");
// 删除元素
System.out.println(linkedList.removeFirst());
System.out.println(linkedList.removeLast());
System.out.println("========================");
while (!linkedList.isEmpty()) { // 判断集合是否为空
System.out.println(linkedList.pop()); // 弹出集合中的栈顶元素
}
System.out.println("========================");
// 调试输出
System.out.println(linkedList);
System.out.println("========================");
// 测试性能
test1();
test2();
test3();
}
public static void test1(){
LinkedList<String> linkedList = new LinkedList<>();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
linkedList.addFirst("abc");
}
long end = System.currentTimeMillis();
System.out.println("头部插入耗时: " + (end - start) + " 毫秒");
}
public static void test2(){
LinkedList<String> linkedList = new LinkedList<>();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
linkedList.addLast("abc");
}
long end = System.currentTimeMillis();
System.out.println("尾部插入耗时: " + (end - start) + " 毫秒");
}
public static void test3(){
LinkedList<String> linkedList = new LinkedList<>();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
linkedList.add(i/2,"abc");
}
long end = System.currentTimeMillis();
System.out.println("中间插入耗时: " + (end - start) + " 毫秒");
}
}
输出结果:
[abc3, abc2, abc1]
========================
abc3
abc1
========================
abc3
abc1
========================
abc2
========================
[]
头部插入耗时: 13 毫秒
尾部插入耗时: 12 毫秒
中间插入耗时: 4762 毫秒
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/110310311
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)