一、集合框架(Collection API)
1. 核心接口及实现类
接口/类 | 说明 | 常用方法 |
---|---|---|
List<E> |
有序、可重复集合 | add() , get() , remove() , size() |
ArrayList<E> |
基于数组实现,查询快 | 同List |
LinkedList<E> |
基于链表实现,增删快 | addFirst() , removeLast() |
Map<K,V> |
键值对存储,键唯一 | put(k, v) , get(k) , keySet() , containsKey() |
HashMap<K,V> |
哈希表实现,无序 | 同Map |
LinkedHashMap<K,V> |
保留插入顺序 | 同Map |
Set<E> |
元素唯一,无序集合 | add() , contains() , remove() |
HashSet<E> |
基于HashMap 实现 |
同Set |
Queue<E> |
队列(FIFO) | offer() , poll() , peek() |
2. 工具类
-
Collections
:<JAVA>
Collections.sort(list); // 排序 Collections.reverse(list); // 反转 List<Integer> synList = Collections.synchronizedList(list); // 线程安全
-
Arrays
:<JAVA>
Arrays.sort(arr); // 数组排序 List<String> list = Arrays.asList("A", "B"); // 数组转List(只读)
二、IO/NIO
1. 基础IO类
类 | 用途 |
---|---|
File |
文件或目录的抽象表示 |
FileInputStream |
字节输入流(读取文件) |
FileOutputStream |
字节输出流(写入文件) |
BufferedReader |
缓冲字符输入流(高效读取文本) |
BufferedWriter |
缓冲字符输出流(高效写入文本) |
示例:读取文本文件
<JAVA>
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} // try-with-resources自动关闭流
2. NIO(Java 7+)
-
Path
和Paths
: 代替File
操作文件路径<JAVA>
Path path = Paths.get("data", "test.txt"); // 获取路径
-
Files
: 文件操作工具类<JAVA>
byte[] data = Files.readAllBytes(path); // 读取文件所有字节 Files.write(path, content.getBytes()); // 写入文件 List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); // 读取所有行
三、多线程
1. 线程管理
-
Thread
类:<JAVA>
Thread thread = new Thread(() -> System.out.println("子线程执行")); thread.start(); // 启动线程 thread.join(); // 等待线程结束
-
ExecutorService
线程池:<JAVA>
ExecutorService pool = Executors.newFixedThreadPool(4); // 创建线程池 pool.submit(() -> { /* 任务逻辑 */ }); // 提交任务 pool.shutdown(); // 关闭线程池
2. 线程安全工具
-
ConcurrentHashMap
:高并发Map -
CopyOnWriteArrayList
:写时复制的线程安全List -
AtomicInteger
:原子操作类<JAVA>
AtomicInteger count = new AtomicInteger(0); count.incrementAndGet(); // 原子自增
四、日期时间(Java 8+)
类 | 说明 | 示例 |
---|---|---|
LocalDate |
日期(年-月-日) | LocalDate.now() ➔ 2023-10-01 |
LocalTime |
时间(时分秒) | LocalTime.of(14, 30) ➔ 14:30 |
LocalDateTime |
日期 + 时间 | LocalDateTime.parse("2023-10-01T14:30:00") |
DateTimeFormatter |
日期格式化 | DateTimeFormatter.ofPattern("yyyy/MM/dd") |
Duration |
时间间隔(秒/毫秒) | Duration.between(startTime, endTime) |
五、工具类
1. Objects
-
判空与比较 :
<JAVA>
if (Objects.isNull(obj)) { ... } // 判空 if (Objects.equals(str1, str2)) { ... } // 安全比较
2. Optional
(Java 8+)
-
避免空指针 :
<JAVA>
Optional<String> opt = Optional.ofNullable(str); opt.ifPresent(s -> System.out.println(s)); // 值存在时执行 String result = opt.orElse("default"); // 安全取值
3. String
基础API
-
常用方法 :
<JAVA>
str.length(); // 字符串长度 str.substring(0, 3); // 截取子串 str.split(","); // 拆分字符串 str.contains("Java"); // 是否包含子串 String.join("-", "A", "B", "C"); // 拼接字符串 ➔ "A-B-C"
六、其他高频API
-
反射:
<JAVA>
Class<?> clazz = Class.forName("com.example.MyClass"); // 获取Class对象 Method method = clazz.getMethod("methodName"); // 获取方法 Object instance = clazz.newInstance(); // 创建实例 method.invoke(instance); // 调用方法
-
正则表达式:
<JAVA>
Pattern pattern = Pattern.compile("\\d+"); // 匹配数字 Matcher matcher = pattern.matcher("abc123"); if (matcher.find()) { System.out.println(matcher.group()); // 输出"123" }
总结
- 集合框架 :优先选用
ArrayList
、HashMap
,注意线程安全问题。 - IO/NIO :掌握
Files
工具类,推荐try-with-resources管理流。 - 多线程 :使用线程池(
ExecutorService
)代替直接创建Thread
。 - 日期时间 :弃用
Date
和Calendar
,改用Java 8新API。 - 工具类 :善用
Optional
处理空值,简化代码逻辑。