Java常用資料結構和用法集合
主要是蒐集寫Leetcode或是日常開發的時候使用的資料結構,以及其用法,免得每次都要google,然後永遠搞不清楚到底要用add還是append
ArrayList
import java.util.ArrayList; // import the ArrayList class
ArrayList<String> cars = new ArrayList<String>(); // Create an ArrayList object
// 加東西
cars.add("Volvo");
cars.add("BMW");
// 取東西,使用index
cars.get(0);
// 修改特定element
cars.set(0, "Opel");
// 移除項目
cars.remove(0);
// 清空全部項目
cars.clear();
// 大小
cars.size();
// 疊代方式
for (String car : cars) {
System.out.println(car);
}
LinkedList
// 定義
LinkedList<String> cars = new LinkedList<String>();
// 加東西
cars.add("Volvo");
cars.add("BMW");
此外
addLast()
將一個項目添加到鏈表的末尾。這將使得列表末端新增一個新項目,擴展了列表的大小。
removeFirst()
會從鏈表的開頭刪除一個項目。這將導致列表中的第一個項目被移除。
removeLast()
會從鏈表的末尾刪除一個項目。這將導致列表中的最後一個項目被移除。
getFirst()
用於獲取鏈表的開頭項目。這允許你檢索列表中的第一個項目。
getLast()
用於獲取鏈表的末尾項目。這允許你檢索列表中的最後一個項目。
HashMap
import java.util.HashMap; // import the HashMap class
HashMap<String, String> capitalCities = new HashMap<String, String>();
// Add keys and values (Country, City)
capitalCities.put("England", "London");
capitalCities.put("Germany", "Berlin");
// 取得某key的值
capitalCities.get("England");
// 移除某Key的值
capitalCities.remove("England");
// 清除全部對
capitalCities.clear();
// 大小
capitalCities.size();
// 印出鍵(Key)
for (String i : capitalCities.keySet()) {
System.out.println(i);
}
// 印出值(Values)
for (String i : capitalCities.values()) {
System.out.println(i);
}
HashSet
import java.util.HashSet; // Import the HashSet class
HashSet<String> cars = new HashSet<String>();
// 加東西
cars.add("Volvo");
cars.add("BMW");
// 檢查是否在set裡了
cars.contains("Mazda");
// 移除物品
cars.remove("Volvo");
// 清除全部物品
cars.clear();
// 大小
cars.size();
// 疊代方式
for (String i : cars) {
System.out.println(i);
}
Queue
// 定義(注意是LinkedList實作)
Queue<String> queue = new LinkedList<>();
// 加東西
queue.add("one");
queue.add("two");
// 或(有細微差別)
queue.offer("three");
// 移除東西
queue.remove("three");
// 或(有細微差別)
queue.poll();
// 看一下head是什麼
queue.element();
// 或
queue.peek();
// 清除全部物品
queue.clear();
// 把Elements加入Queue
String nums[] = {"one","two","three","four","five"};
Collections.addAll(queue, nums);
// 轉換為陣列
String strArray[] = queue.toArray(new String[queue.size()]);
PriorityQueue
// Creating empty priority queue
PriorityQueue<Integer> pQueue = new PriorityQueue<Integer>();
// 加入
pQueue.add(10);
pQueue.add(20);
pQueue.add(15);
// 取得最上層物件並移除
pQueue.poll();
// 看一下最上層物件
pQueue.peek();
// 使用comparator的方式
// 比較map的值,從小到大
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Comparator.comparingInt(map::get));
// 或是使用lambda
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(
(a, b) -> map.get(a) - map.get(b)
);
// Add elements to the priority queue
pq.addAll(map.keySet());
// 從大到小
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Comparator.comparingInt(map::get).reversed());
// 或
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(
(a, b) -> map.get(b) - map.get(a)
);
// 或
PriorityQueue<Integer> pQueue = new PriorityQueue<Integer>(
Collections.reverseOrder()
);
Stack
// 實例化
Stack<String> animals= new Stack<>();
// 加入stack
animals.push("Dog");
// 移除最頂層(並回傳)
String element = animals.pop();
// 取得最上層的東西
String element = animals.peek();
// 查詢某項在stack的什麼位置
int position = animals.search("Horse");
// 是否為空
boolean result = animals.empty();
Sort
// sort(array, comparator)
// 從小排到大lexicographically
Arrays.sort(numString, new Comparator<String>() {
@Override
public int compare(String i, String j) {
String s1 = i+j;
String s2 = j+i;
return s1.compareTo(s2);
}
});
// sort 2d陣列,二維陣列
// Sort by the first element
int[][] intervals = {{1, 2}, {2, 3}, {3, 4}, {1, 3}};
Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
// Sorting 2d array based on 1st column in descending order
Arrays.sort(intervals, (a, b) -> Integer.compare(b[0], a[0]));
其他操作
// Sort List
Collections.sort(cars);
Java常用資料結構和用法集合
https://f88083.github.io/2023/12/30/Java常用資料結構和用法集合/