促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
Java 25
所有任务
所有级别
Set:HashSet 与 TreeSet,元素唯一性
JAVA 25 SELF
等级 26,
课时 3
在本讲中,我们讲解 Java 中的接口
Set
:它与
List
的区别、如何保证元素唯一性、实现
HashSet
(快速且无序)与
TreeSet
(有序)的工作方式,以及在何种场景选择哪种结构。我们还将讨论关于
equals()
和
hashCode()
的关键细节、与
null
的交互、常见任务示例(去重、唯一性校验)以及常见错误。
Generics:为什么需要,基础语法
JAVA 25 SELF
等级 26,
课时 4
从“原始”集合过渡到类型安全的代码。本讲将解析:在引入泛型之前,基于
Object
的集合为什么会导致运行时错误(
ClassCastException
)、泛型如何在编译期解决这一问题、如何阅读和编写诸如
List<String>
、
Map<String, Integer>
这样的结构,什么是“菱形操作符”
<>
,以及为什么需要类型擦除(type erasure)。另外还有自定义泛型类的示例与常见错误的分析。
Collection、List、Set、Map 接口:层次结构
JAVA 25 SELF
等级 27,
课时 0
拆解 Java 集合的基础:接口
Collection
及其分支
List
、
Set
、
Queue
/
Deque
,以及独立的层次
Map
。你将了解为什么
Map
不继承
Collection
、层次结构长什么样、各实现有何区别、哪些方法是关键、以及在何时选择什么。最后——常见错误以及如何避免它们。
Iterable 和 Iterator:遍历集合
JAVA 25 SELF
等级 27,
课时 1
在本讲中,我们讲解如何使用
Iterable
和
Iterator
接口:
iterator()
方法做什么、for-each 循环在幕后如何工作、什么时候以及为何要手动使用
hasNext()
和
next()
、如何通过
remove()
安全地删除元素而不触发
ConcurrentModificationException
,以及如何通过
keySet()
、
values()
和
entrySet()
正确遍历
Map
。包含大量实用示例与常见错误,便于巩固理解。
Queue, Deque, Stack:队列与栈的使用
JAVA 25 SELF
等级 27,
课时 2
在本课中,我们讲解 Java 中的队列与栈:如何理解
FIFO
与
LIFO
原理,
Queue
、
Deque
与
Stack
有何区别,为什么在现代项目中更推荐使用
ArrayDeque
,以及如何安全地使用
offer
/
poll
/
peek
与
push
/
pop
/
peek
等方法。我们将展示
LinkedList
、
PriorityQueue
的示例,以及打印队列与 undo 栈的小应用,并分析常见错误。
NavigableSet/NavigableMap
JAVA 25 SELF
等级 27,
课时 3
在本讲中,我们将讲解 Java 的有序且可导航的集合:
NavigableSet
和
NavigableMap
。我们将实操演示如何通过
subSet
/
headSet
/
tailSet
处理范围,如何借助
lower
、
floor
、
ceiling
、
higher
查找“最近”的元素,以及如何通过
pollFirst
/
pollLast
操作边界。还会介绍
descendingSet
/
descendingMap
这种反向视图、“活的” view 以及典型用例(如日程、优先级、刻度)。实现上使用
TreeSet
和
TreeMap
。
泛型通配符
JAVA 25 SELF
等级 27,
课时 4
在本讲中,我们讲解 Java 泛型的不变性、类型参数的边界(
extends
/
super
)、通配符
?
以及
PECS
规则(“Producer
Extends
, Consumer
Super
”)。我们将讨论如何编写使用通配符的通用方法、类型擦除(type erasure)的工作方式、在使用
instanceof
和数组时的限制,以及与集合和 Stream API 的实践。最后——常见错误及其避免方法。
集合元素的过滤
JAVA 25 SELF
等级 28,
课时 0
本讲将讲解在
Java
中对集合进行过滤的实战:通过循环
for
的命令式方法、在迭代过程中借助
Iterator
和
remove()
方法进行安全删除,以及更现代且简洁的
removeIf
(Java 8+)。我们还会讨论为什么会出现
ConcurrentModificationException
、什么时候应该新建列表,以及在编写过滤条件时最常见的错误。
集合转换
JAVA 25 SELF
等级 28,
课时 1
在本讲中我们讲解如何以命令式方式执行集合转换:如何从
List<String>
得到
List<Integer>
(例如字符串长度),如何从领域模型对象(
Product
→ 名称/价格)中提取字段,如何通过
addAll()
或嵌套循环对嵌套集合进行“扁平化”,以及如何用
if
和类似
startsWith
的方法把过滤与转换组合起来。最后,我们会讨论一些常见错误:修改源集合、错误的类型转换(
ClassCastException
)以及性能方面的问题。
安全删除元素
JAVA 25 SELF
等级 28,
课时 2
在实践中,从集合中删除元素往往会导致
ConcurrentModificationException
。本讲将解析为何通过
for-each
遍历时会发生这种情况,如何使用
Iterator.remove()
安全删除元素,
ListIterator
有何用处,何时选择
removeIf
(Java 8+),以及如何正确地处理
Map
。最后——实用建议与常见错误。
EnumSet/EnumMap
JAVA 25 SELF
等级 28,
课时 3
本讲将解析面向枚举的专用集合——来自
java.util
包的
EnumSet
和
EnumMap
:它们的内部工作机制(位掩码与按
ordinal
索引)、为何它们比
HashSet
/
HashMap
更快且更紧凑、适用场景(标志、映射表、有限状态机)、修改
enum
与序列化相关的坑点,以及一套最佳实践与常见错误,并配有直观的代码示例。
LinkedHashSet/LinkedHashMap
JAVA 25 SELF
等级 28,
课时 4
在本讲中,我们讨论可记忆顺序的集合:
LinkedHashSet
和
LinkedHashMap
。你将了解它们如何维护插入顺序和访问顺序,如何仅用几行代码通过重写
removeEldestEntry
构建 LRU 缓存,与
HashSet
/
HashMap
相比的内存与速度开销,什么时候需要确定性顺序以获得稳定的测试和报告,以及在队列/栈场景下为何
ArrayDeque
比
LinkedList
更合适。最后——常见错误及其避免方法。
显示更多
1
...
12
13
14
15
16
...
30
Please enable JavaScript to continue using this application.