在Java面試中,容器和多線程是兩個常見的考察點。容器主要包括List、Set、Map等常見的數據結構,而多線程則是Java中常用的一種編程方式。
容器類在Java中是非常重要的一部分,其中List是最常用的容器之一。List可用于存儲一組有順序的元素,其中包括重復元素。常見的List實現類包括ArrayList和LinkedList。ArrayList是使用動態數組實現的,LinkedList則是使用雙向鏈表實現的。在對List進行操作時,需要注意線程安全問題。
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
for (String fruit : list) {
System.out.println(fruit);
}
Set是另一個常見的容器,與List不同的是,Set內的元素是無順序的,并且不允許重復元素。常見的Set實現類包括HashSet和TreeSet。HashSet使用哈希表實現,插入和查找的時間復雜度都是O(1),而TreeSet則是使用二叉樹實現,插入和查找的時間復雜度都是O(logN)。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
for (String fruit : set) {
System.out.println(fruit);
}
Map是另一個常見的容器,用于存儲鍵值對。對于一個鍵只有一個值的情況,使用HashMap即可;而對于一個鍵有多個值的情況,可使用Multimap。常見的Map實現類包括HashMap和TreeMap。HashMap使用哈希表實現,插入和查找的時間復雜度都是O(1),而TreeMap則是使用紅黑樹實現,插入和查找的時間復雜度都是O(logN)。
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
多線程是Java中另一個重要的概念。Java的多線程編程是基于線程對象的,每個線程都有自己的狀態、優先級和處理器等信息。Java提供了許多多線程編程的API,如Thread、Runnable、Callable、Executor等。多線程中需要注意線程安全問題,常見的線程安全類包括ConcurrentHashMap和AtomicInteger。
public class MyThread extends Thread {
public void run() {
System.out.println("MyThread is running.");
}
}
MyThread thread = new MyThread();
thread.start();
總之,在Java面試中,對容器和多線程的了解是非常基礎的,需要掌握常用的容器類和線程編程的API,以及線程安全問題。