
本文共 1358 字,大约阅读时间需要 4 分钟。
short s1 = 1; s1 += 1;有错吗?
在 Java 中,short s1 = 1; s1 = s1 + 1;
这一行代码存在问题。原因在于 1
是 int
类型,而 s1
是 short
类型。当执行 s1 = s1 + 1
时,运算结果仍然是 int
类型,无法直接赋值给 short
类型变量。需要使用强制类型转换:s1 = (short)(s1 + 1)
。而使用 s1 += 1;
则隐含了这一强制类型转换,因此该代码是可以正确编译的。
Java 集合的分类与实现
在 Java 中,集合主要分为四类:List、Queue、Set 和 Map。每种集合类型下都有多个具体的实现类,以下是详细介绍:
1. List 列表
- 有序:列表中的元素按照插入顺序保存,支持通过索引快速访问。
- 可重复:允许同一个元素多次出现。
- 常用实现类:ArrayList、LinkedList、Vector、Stack。
1.1 ArrayList 列表
ArrayList 是基于数组实现的列表,支持动态大小。当列表容量不足时,会扩容。扩容策略是:新容量等于旧容量的两倍(Vector 为一倍)。ArrayList 的性能较高,适合大部分场景。
1.2 LinkedList 双向链表
LinkedList 是基于双向链表实现的列表,支持 O(1) 时间的插入和删除操作。随机访问时需要遍历链表,效率较低。适合频繁插入和删除的场景。
1.3 Vector 向量
Vector 是基于数组实现的线程安全列表,扩容策略与 ArrayList 不同,每次扩容时容量翻倍。由于线程安全的性能开销较大,通常不推荐使用。
1.4 Stack 栈
Stack 是基于数组实现的栈(后进先出),与 Vector 类似,但 Stack 专门为栈设计,避免使用与列表无关的 Vector 方法。
1.5 ArrayQueue 数组队列
ArrayQueue 是基于数组实现的队列,支持先进先出的操作。其内部通过两个指针指向队头和队尾,确保 FIFO 次序。
2. Queue 队列
Queue 是基于双端队列实现的集合,常用的实现类有 ArrayDeque、LinkedList 和 PriorityQueue。
2.1 ArrayDeque 数组双端队列
ArrayDeque 是最灵活的双端队列实现类,支持在两端插入和删除元素,且性能优于 Stack 和 Queue。
2.2 LinkedList 队列
LinkedList 双向链表实现的队列,支持 O(1) 时间的插入和删除操作。
2.3 PriorityQueue 优先队列
PriorityQueue 是基于完全二叉树实现的优先队列,支持按键值排序的最小值快速获取。其内部基于小顶堆结构。
3. Map 映射/字典
Map 是键值对的集合,键唯一,值可重复。常用的实现类有 HashMap、TreeMap 和 LinkedHashMap。
3.1 HashMap 哈希映射
HashMap 是基于哈希表实现的映射,支持 O(1) 时间的增删查找操作,适合大部分场景。
以上内容通过优化,使其更加符合技术写作风格,同时保留了核心信息,避免了重复和冗余,方便搜索引擎抓取和展示。
发表评论
最新留言
关于作者
