本文详细讲解Java集合框架核心知识点,涵盖Collection、List、Set、Map、迭代器、泛型、工具类。
一、集合概述
集合是Java存储对象数据的容器,用于存储引用类型(包装类/对象),长度可动态扩容,比数组更灵活。
二、集合框架体系结构
1. Collection
- List:有序、可重复、有索引
- ArrayList
- LinkedList
- Vector
- Set:无序、不重复、无索引
- HashSet
- LinkedHashSet
- TreeSet
2. Map
- HashMap
- LinkedHashMap
- TreeMap
- Hashtable
- Properties
三、Collection 通用方法
所有单列集合都可使用:
public class CollectionDemo {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("Java"); // 添加
coll.remove("Java"); // 删除
coll.contains("Java"); // 判断包含
coll.isEmpty(); // 判断空
coll.size(); // 长度
coll.clear(); // 清空
}
}
四、List 集合(有序、可重复、有索引)
1. ArrayList
底层数组,查询快、增删慢
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.get(0); // 获取
list.set(0,"C"); // 修改
list.remove(0); // 删除
2. LinkedList
底层链表,查询慢、增删快
LinkedList<String> link = new LinkedList<>();
link.addFirst("first");
link.addLast("last");
link.getFirst();
link.getLast();
3. List 遍历方式
// 迭代器遍历
Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
}
// 增强for
for(String s : list){}
五、Set 集合(无序、不重复、无索引)
1. HashSet
底层哈希表,无序、不重复
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
2. LinkedHashSet
有序、不重复
3. TreeSet
可排序、不重复
Set 核心:保证不重复原理
依赖对象:
- hashCode()
- equals()
自定义对象必须重写这两个方法才能去重。
六、Map 集合(键值对 key-value)
Key唯一,Value可重复
1. HashMap
最常用,哈希表,无序
Map<String, String> map = new HashMap<>();
map.put("name","小码哥"); // 添加
map.get("name"); // 获取
map.remove("name"); // 删除
map.containsKey("name"); // 判断key
map.keySet(); // 获取所有key
map.entrySet(); // 获取所有键值对
2. LinkedHashMap
有序
3. TreeMap
可排序
4. Map 遍历
方式1:键找值
Set<String> keys = map.keySet();
for(String key : keys){
String value = map.get(key);
}
方式2:键值对对象
Set<Map.Entry<String,String>> entrys = map.entrySet();
for(Map.Entry<String,String> entry : entrys){
String key = entry.getKey();
String value = entry.getValue();
}
七、迭代器 Iterator
用于遍历集合
Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
}
八、泛型集合
规定集合存储的数据类型,避免强转
List<String> list = new ArrayList<>();
Map<String,Integer> map = new HashMap<>();
九、Collections 工具类
Collections.sort(list); // 排序
Collections.shuffle(list); // 打乱
Collections.max(list); // 最大值
Collections.min(list); // 最小值
Collections.reverse(list); // 反转
十、集合高频面试点
- 数组/链表
- 查询/增删性能
- 线程不安全/安全
- 允许null/不允许null
我是双栈小码哥,点赞+收藏+关注,希望本文能对您的学习和工作有所帮助。




