Java容器学习(3)

举报
幼儿园老大* 发表于 2024/09/19 11:15:32 2024/09/19
【摘要】 ArrayList 类【数组序列】实现了 List 接口,内部使用 Object 数组存储:可以高效地按索引进行元素修改和查询。添加元素时动态扩容:当容量满后,ArrayList 类会新建一个 1.5 倍容量的新数组,然后将当前数组数据全部复制过去。ArrayList 构造方法List<Integer> list = new ArrayList<>(); // 默认...

ArrayList 类

【数组序列】实现了 List 接口,内部使用 Object 数组存储:

  1. 可以高效地按索引进行元素修改和查询。
  2. 添加元素时动态扩容:当容量满后,ArrayList 类会新建一个 1.5 倍容量的新数组,然后将当前数组数据全部复制过去。

ArrayList 构造方法

List<Integer> list = new ArrayList<>();              // 默认初始容量为 10
List<Integer> list = new ArrayList<>(100);           // 自定义初始容量
List<Integer> list = new ArrayList<>(queue);         // 构造时直接复制其他容器元素(可以是任何 Collection 类)

List list = new ArrayList();                         // 未指定元素类型则为 Object 类Copy to clipboardErrorCopied

LinkedList 类

【链表序列】实现了 List 和 Deque 接口。内部使用双向链表存储:

  1. 可以高效地进行元素插入和删除。
  2. 容量无限。

LinkedList 构造方法

List<String> list = new LinkedList<>();              // 创建空对象
List<String> list = new LinkedList<>(queue);         // 复制其他容器元素Copy to clipboardErrorCopied

ArrayDeque 类

【数组双端队列】实现了 Deque 接口。内部使用 Object 数组存储(不允许存储 null 值):

  1. 可以高效进行元素查找和尾部插入取出,是用作队列、双端队列、栈甚至递归树的绝佳选择。
  2. 添加元素时动态扩容:当容量满后,ArrayDeque 类会新建一个 1.5 倍容量的新数组,然后将当前数组数据全部复制过去。

ArrayDeque 构造方法

ArrayDeque<String> queue = new ArrayDeque<>();              // 创建空对象
ArrayDeque<String> queue = new ArrayDeque<>(list);          // 复制其他容器元素Copy to clipboardErrorCopied

PriorityQueue 类

【无界优先级队列】实现了 Queue 接口。内部使用 Object 数组存储(不允许存储 null 值):

  1. PriorityQueue 类内会自动对元素进行排序,是作为堆的绝佳选择。但实际在数组中并不是有序存储,而只保证队首元素是最小值:每次弹出队首元素后会自动查找剩余队列中的最小元素放到队首。
  2. 添加元素时动态扩容:当容量满后,PriorityQueue 类会新建一个 1.5 倍容量的新数组,然后将当前数组数据全部复制过去。

PriorityQueue 构造方法

开发者在构造队列时可通过重写 compare 方法自定义排序规则。如果存储未重写 compareTo 方法的自定义对象,则必须重写 compare 方法。


// 默认排序方法
PriorityQueue<Integer> queue = new PriorityQueue<Integer>();

// 自定义排序方法(Lambda 表达式)
PriorityQueue<Student> queue = new PriorityQueue<Student>((s1, s2) -> {
    if(s1.getScore() == s2.getScore()){
        return s1.getName().compareTo(s2.getName());
    }
    return s1.getScore() - s2.getScore();
});
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。