Array 是 Java 中的基本功能,而 ArrayList 是 Collection 的一部分; ArrayList 和 LinkedList 都是 Java 中的集合類型,它們都實現了 List 接口。基本特徵簡單如下 :
- Array 是一個有固定大小的,每次創建都需要設定,而且在創建後,是不能再更改大小
- ArrayList ,是一個有浮動大小的Array,且適用於需要快速訪問集合中的元素的場景。
- LinkedList 適用於頻繁插入和刪除元素的場景。
如果需要實現隊列或棧等數據結構,也可以選擇 LinkedList。
使用 HashMap 的方法 :
computeIfAbsent(K key, Function remappingFunction)
其中 remappingFunction 是一個 Functional interface
- input 為 map 的 key
- output 會成為 map 的 value
HashMap 的 computeIfAbsent 方法,在 key 不存在時,會做 remappingFunction 的操作,所以再也不會因為漏寫
if x == null
而出現空指針的 bug 了。
刷題時很常出現 Array 的結構如
int[]、char[]
等等…,故在這邊條列一些常用的 Arrays 方法。這次主要整理下 Java 中 Arrays 類的常用方法,在使用過程也可以複習 java 提供的工具類,還有一些泛型的坑…
經常有一些業務邏輯要用 Map 來解決,如果再多懂得一些 Map 的方法,是可以寫出精簡的 code 的。這裡展示一些優雅處理
Map<K, Collection<T>>
類型的方式。
Java 現在 Stack 類已經不建議使用。現在推薦的是,使用雙端隊列接口 Deque 取代 Stack。 Deque 是 interface,有兩個常用的 implement :
- ArrayDeque
- LinkedList
簡單來介紹和比較一下。
把 List of array 轉成 2D-array
List<T[]> list = new ArrayList(); // 記得 list.size() // 後面還有個[] T result[][] = list.toArray(new T[list.size()][]); // 實際 example List<int[]> listOfIntegers = List.of( new int[] { 1, 2 }, new int[] { 3, 55, 65 } ); int[][] array2D = listOfIntegers.toArray( new int[listOfIntegers.size()][] );