java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java中array list set map对比

java中array list set map对比及分析

作者:han_hanker

本文主要讲述了Java中ArrayList、Set、Map的数据结构特性对比以及常用子类或实现类,Array有顺序,允许重复;List有顺序,允许重复;Set无序,不允许重复;Map不保持顺序,key唯一,常用子类有ArrayList、LinkedList、Vector等,HashMap、TreeMap等

java中array list set map对比

特性 / 操作Array(数组)List(列表)Set(集合)Map(映射)
是否有顺序
(Order)
✅ 有(索引顺序)✅ 有(插入顺序)❌ HashSet:无序
✅ LinkedHashSet:插入顺序
✅ TreeSet:自然/自定义排序
❌ HashMap:无序
✅ LinkedHashMap:插入顺序
✅ TreeMap:按 key 排序
是否允许重复✅ 允许✅ 允许❌ 不允许(元素唯一)❌ Key 唯一
✅ Value 可重复
❌ 长度固定,仅能赋值add(E), add(i, E)add(E)put(K, V)
❌ 无法真正删除remove(Object), remove(int)remove(Object)remove(Object key)
arr[i] = valset(int, E)❌ 需先删后加put(K, V) / replace(K, V)
arr[i]get(i), indexOf(), contains()contains()get(K), containsKey(), containsValue()
常用子类 / 实现类- 原生语法:
String[] arr = new String[5];
- 工具类:
Arrays.asList(...)(返回固定大小 List)
• ArrayList(最常用)
• LinkedList(频繁头尾操作)
• Vector(线程安全,已少用)
• CopyOnWriteArrayList(并发安全)
• HashSet(最常用,基于哈希)
• LinkedHashSet(保持插入顺序)
• TreeSet(自动排序,基于红黑树)
• HashMap(最常用)
• LinkedHashMap(保持插入顺序)
• TreeMap(key 自动排序)
• ConcurrentHashMap(高并发场景)

注意

List: 里 remove. 因为 remove 有 int 和 Object 两个重载,传入数字字面量时容易误用:

List<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);

// ❌ 错误:想删除值为 1 的元素,但实际删除了索引为 1 的元素!
nums.remove(1); // 调用了 remove(int index),删除了 "2"

// ✅ 正确:要删除值为 1 的元素,需显式传入 Integer 对象
nums.remove((Integer) 1);   // 或
nums.remove(Integer.valueOf(1));

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文