Java小白-Collection集合体系

一、Collection集合体系

1. 核心接口与实现类

类型 特点 实现类 底层结构 线程安全
List 有序、可重复、有索引 ArrayList 动态数组
LinkedList 双向链表
Vector 动态数组 是(同步)
Set 无序、唯一 HashSet 哈希表+链表/红黑树
TreeSet 红黑树

二、Collection常用API

1. 添加相关方法

方法 说明
boolean add(E e) 添加单个元素
boolean addAll(Collection c) 添加另一个集合的所有元素

2. 删除相关方法

方法 说明
boolean remove(Object o) 删除指定元素(重复时删除第一个)
boolean removeAll(Collection c) 删除与指定集合的交集元素
void clear() 清空集合

3. 判断相关方法

方法 说明
boolean contains(Object o) 判断是否包含某个元素
boolean isEmpty() 判断集合是否为空
boolean containsAll(Collection c) 判断是否包含另一个集合的所有元素

4. 数组转换相关方法

方法 说明
Object[] toArray() 将集合转为Object数组
T[] toArray(T[] a) 转为指定类型的数组

三、List集合详解

1. 核心特点

  • 有序‌:元素按插入顺序存储(可通过索引访问)。
  • 可重复‌:允许存储相同元素。
  • 底层实现‌:
    • ArrayList‌:动态数组(默认初始容量10,扩容为1.5倍)。
    • LinkedList‌:双向链表(适合频繁增删)。
    • Vector‌:线程安全的动态数组(默认扩容增量为当前容量一倍)。

2. 迭代器与并发问题

  • 遍历时禁止直接操作集合‌:使用普通forIterator遍历时,直接调用add()/remove()会触发ConcurrentModificationException
  • 安全修改方法‌:
    • ListIterator‌:通过listIterator()获取,支持遍历时通过add()/remove()修改集合(仅影响后续遍历)。
     
    ListIterator it = list.listIterator();
    while (it.hasNext()) {
        String s = it.next();
        if (s.equals("test")) {
            it.add("new"); // 安全添加
        }
    }
    


四、Set集合实现类对比

1. HashSet

  • 去重机制‌:通过hashCode()equals()判断重复。
  • 底层结构‌:基于HashMap实现(哈希表+链表/红黑树)。
  • 示例‌:
     
    class Person {
        String name;
        // 必须重写hashCode()和equals()!
    }

2. TreeSet

  • 排序机制‌:
    • 自然排序:元素需实现Comparable接口(如StringInteger)。
    • 自定义排序:通过Comparator接口。
  • 示例‌:
     
    TreeSet set = new TreeSet<>((s1, s2) -> s2.compareTo(s1)); // 逆序
    


五、== 与 equals 的区别

操作符/方法 基本类型 引用类型
== 比较值是否相等 比较内存地址是否相同
equals() 无意义(编译器报错) 默认比较内存地址;需重写

示例‌:

 
  
String s1 = new String("hello"); 
String s2 = new String("hello"); 
System.out.println(s1 == s2); // false(内存地址不同) 
System.out.println(s1.equals(s2)); // true(内容相同)


六、泛型与增强for循环

1. 泛型

  • 作用‌:约束集合元素类型,避免类型转换错误。
  • 自定义泛型类‌:
     
    public class Box {
        private T data;
        public T getData() { return data; }
    }
    

2. 增强for循环

  • 语法‌:for (ElementType element : collection) { ... }
  • 限制‌:遍历时不能修改集合,否则触发ConcurrentModificationException

七、Collection与Collections的区别

类别 Collection Collections
定位 单列集合的根接口(如List、Set) 操作集合的工具类
核心功能 定义集合的增删查改方法 提供静态方法(排序、查找、同步等)
示例方法 add()remove()contains() sort()shuffle()synchronizedList()

补充说明‌:

  • Vector vs ArrayList‌:优先使用ArrayList,若需线程安全可用Collections.synchronizedList()包装。
  • HashSet去重规则‌:必须同时重写hashCode()equals(),否则无法正确去重。
  • 增强for循环替代方案‌:使用Iteratorfori遍历并操作集合。

你可能感兴趣的:(windows,python,linux)