java 集合 继承关系

Iterable接口:

所有集合类的根接口,定义了用于迭代的 iterator() 方法,支持 for-each 语法。

public interface Iterable<T> {
    Iterator<T> iterator();
}

Collection 接口

继承自 Iterable,是所有集合的顶级接口,定义了集合常用的操作方法,如 add(), remove(), size() 等。

public interface Collection<E> extends Iterable<E> {
    boolean add(E e);
    boolean remove(Object o);
    int size();
    // 其它方法……
}

List 接口

  • 特点:有序集合,允许元素重复,可以通过索引访问元素。

  • 常见实现

    • ArrayList:基于动态数组,随机访问快,插入删除可能较慢。

    • LinkedList:基于双向链表,适合频繁插入和删除操作,同时也实现了 Queue 接口,可以作为队列使用。

Set 接口

  • 特点:不允许重复元素,无序存储(部分实现有排序需求)。

  • 子接口

    • SortedSet:要求集合中的元素按照一定顺序排列。

    • NavigableSet:在 SortedSet 的基础上提供导航方法,如 lower(), floor(), ceiling() 等。

  • 常见实现

    • HashSet:基于哈希表实现,元素无序;

    • LinkedHashSet:在 HashSet 的基础上维护插入顺序;

    • TreeSet:基于红黑树实现,能够对元素进行排序。

Queue 接口

  • 特点:通常用来表示队列结构,遵循先进先出(FIFO)的原则。

  • 子接口

    • Deque(双端队列):支持从两端插入和删除。

  • 常见实现

    • ArrayDeque:基于数组实现的双端队列;

    • LinkedList:既可作为 List 也可作为 Queue 使用。

Map 接口

  • 特点:保存键值对(Key-Value)的映射关系,但不属于 Collection 层次结构。

  • 子接口

    • SortedMap:键值对按照键的自然顺序或指定顺序排序。

    • NavigableMap:在 SortedMap 的基础上提供导航方法,如 lowerEntry(), higherEntry() 等。

  • 常见实现

    • HashMap:基于哈希表实现,操作时间复杂度平均为 O(1);

    • LinkedHashMap:在 HashMap 的基础上维护元素的插入顺序;

    • TreeMap:基于红黑树实现,支持排序;

    • Hashtable:线程安全的哈希表,但一般不推荐使用,现多用 ConcurrentHashMap 替代。

抽象类在集合框架中的作用

为了减少实现类的开发工作,Java 提供了一些抽象类作为骨架实现:

  • AbstractCollection:实现了 Collection 接口的大部分方法,简化了子类的开发。

  • AbstractList:继承自 AbstractCollection,实现了 List 接口,常用来开发自定义列表。

  • AbstractSet:继承自 AbstractCollection,实现了 Set 接口,适用于自定义集合。

  • AbstractMap:实现了 Map 接口的大部分方法,子类只需实现少量方法即可。

这些抽象类为实现者提供了默认的行为,使得定制集合时只需关注特殊逻辑,而不用从零开始实现所有接口方法。

  • 继承体系清晰:所有集合都继承自 Iterable(通过 Collection),而 Map 则独立于 Collection 之外,但同样拥有明确的接口层次。

  • 接口与抽象类配合:接口定义行为规范,而抽象类提供默认实现,减少了重复代码。

  • 多样性实现:List、Set、Queue 和 Map 的多种实现类可以根据不同需求选用,比如 ArrayList 与 LinkedList 在不同场景下的效率差异,以及 HashSet 和 TreeSet 在元素排序上的不同表现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值