| 像什么 | 怎么取 | |
|---|---|---|
| ArrayList | 排队,有 0、1、2 号 | get(0) |
| HashMap | 柜子 | get("钥匙") |
| HashSet | 袋子,同样的只放得进一个 | 只能问 contains |
names.add("张三"); names.add("李四"); names.add("张三");
names.size() → 2
题:add a b a c b → size 3 ✅
plugIn(鼠标) → 跳进 plugIn → 里面调 鼠标.connect()
set.add(张三) → 跳进 add → 里面调 张三.compareTo(...)
add 是 Java 的人写好的,看不见里面,所以以为"没调用"。
- implements Comparable<Student> = 签了 Java 自带的合同 Comparable,合同里只有一条:必须会 compareTo
- 题:TreeSet 的 add 只收签了哪份合同的?→ 答「compareTo 的」✅(合同名叫 Comparable)
add 张三 → compareTo 被调用了:张三 和 张三 比 ← 只有一个也比:跟自己比,只为检查"能不能比"
add 李四 → compareTo 被调用了:李四 和 张三 比
add 王五 → compareTo 被调用了:王五 和 张三 比
排出来:李四 18 / 张三 20 / 王五 25
return this.age - o.age:负数=我排前,正数=我排后,0=当成同一个(Set 不收重复)
ClassCastException: class Student cannot be cast to class java.lang.Comparable
at java.util.TreeMap.compare(...) ← 证据:add 里面真的在比