←

两处会写错的 Java 集合用法

集合 API 本身不长。写错通常不是没记住方法名,而是用了一份和普通 ArrayList、HashMap 行为不同的实现。

前缀和、次数统计里,键不存在和次数为 0 是同一件事。get 在缺键时返回 null,后面做加法就要先判空。getOrDefault(sum, 0) 把这两种情况收成一次读取:有这个键就取出次数,没有就当 0。

Arrays.asList 返回的列表背后是原数组,长度固定。add 和 remove 会直接失败。它适合作为只读视图,或者立刻拷进 new ArrayList<>(Arrays.asList(...))。需要按索引改值时用 set;需要改变长度时,不要继续用这一份。

Set 只回答「出现过没有」,不保留顺序,也不保留重复。把次数放进 Set,或者把「是否存在」放进 List 再线性找,都是把结构和问题配错了。