Java Note 01:常忘 Java 語法

為了麵包不得已開始刷題人生,但被 IDE 寵壞後,默寫時連迴圈都寫不出來了,趕快來複習一下。

for loop

基本
1
2
3
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
迭代
1
2
3
for (int i : array) {
System.out.println(i);
}

String

Java String 类

返回字串長度

int length();

判斷字串值是否相同

boolean equals(String value);

返回指定索引的 char

char charAt(int index);

返回字串轉換成的 char[]

char[] toCharArray();

返回子字串(指定頭尾)

String substring(int beginIndex, int endIndex);
注意:包含頭,不包含尾。

返回子字串(指定頭)

String substring(int beginIndex);

判斷是否包含指定字符序列

boolean contains(CharSequence chars);

Character

確定是否為字母或數字

Character.isLetterOrDigit(char)

Array

建立新 Array 方法

1
2
3
int[] intArray = new int[3]; // 長度為三,空的 Array
int[] intArray2 = {1, 2, 3}; // 自定義內容的 Array,算是 intArray3 方法的語法糖
int[] intArray3 = new int[]{1, 2, 3}; // 與 intArray2 一樣,不過在前面沒有表達式的型別宣告時只能這樣用,不然會出 illegal start of expression 錯

ArrayList

Java ArrayList

Arrays

Arrays 是處理各式 Array 的工具類。

排序傳入的 array

Arrays.sort(array);

比較兩 arrays 值是否相同

Arrays.equals(array1, array2);

生成裝有 values 的 List

Arrays.asList(value1, value2, …);
返回的 List 不適合拿來操作,通常是用來快速建立指定元素的 ArrayList 或 HashSet 之類的類別。

Collections

排序

Collections.sort(list);
Arrays 的 sort 不能排序 ArrayList,所以要用這個。

Collections.reverseOrder()
在建構 PriorityQueue 之類的 class 時可以用此指定反向順序。

HashMap

Java HashMap

需要注意基本類別要換成封裝類別。

獲取指定 key 對應的 value

hashmap.get(key);

獲取指定 key 對應的 value,若找不到 key 就返回 default

hashmap.getOrDefault(key, default);

添加鍵值對

hashmap.put(key, value);

檢查是否存在指定 key 對應的映射關係

hashmap.containsKey(key);

檢查是否存在指定 value 對應的映射關係

hashmap.containsValue(value);

刪除 key 對應的鍵值對

hashmap.remove(key);

返回 hashmap 中所有 key 組成的 set

hashmap.keySet();

返回 hashmap 中所有 value 組成的 set

hashmap.values();

返回 hashmap 中所有 映射關係 的 set

hashmap.entrySet();
換容器時會使用到,每個鍵值對的類型為 Map.Entry
Map.Entry 取得鍵:getKey()
Map.Entry 取得值:getValue()

HashSet

Java HashSet

需要注意基本類別要換成封裝類別。

添加元素

hashset.add(value);

判斷元素是否存在

hashset.contains(value);

刪除元素

hashset.remove(value);

獲取 hashset 大小

hashset.size();

交集技巧

hashset1.retainAll(hashset2);
返回扣掉兩 sets 未交集元素後的 hashset1。

差集技巧

hashset1.removeAll(hashset2);
返回扣掉兩 sets 交集元素後的 hashset1。

聯集技巧

hashset1.addAll(hashset2);
返回加上兩 sets 未交集元素後的 hashset1。

PriorityQueue

Java PriorityQueue

先進先出,預設先出來的是最小的 (Ascending Order)

建構方式

可以帶入自定義的 Comparator,如:

1
2
3
PriorityQueue<Map.Entry<Integer, Integer>> pq = new PriorityQueue<>(
(a, b) -> a.getValue() - b.getValue()
);

新增元素

add()

訪問開頭元素

peek()

返回並刪除隊列開頭

poll()

Stream

Java 8 Stream

Math

比大小

Math.min(value1, value2);
Math.max(value1, value2);

絕對值

Math.abs(value);

printf

Java 格式化输出 printf 用法

1
System.out.printf();

基礎型別的預設值

int

0

三元運算子

1
判斷式 ? 若判斷為真執行區塊 : 若判斷為假執行區塊

結語

隨著科技進步,記憶體容量大到唸不出單位了,我的腦容量卻是連有沒有 1 byte 都不清楚。

參考資料

Java 全栈知识体系

閒聊「Arrays.asList()」的坑