`
乱蓬头199303
  • 浏览: 80460 次
文章分类
社区版块
存档分类
最新评论

java容器类的继承结构

阅读更多

摘要: java容器类的继承结构

Java容器类库定义了两个不同概念的容器,Collection和Map

(文中Jdk源码版本无特殊说明均为jdk1.8.0_101)

 public interface Collection<E> extends Iterable<E> {

可以看到,java定义了Collection接口和内部集合的基本操作方法,Collection默认可以进行对集合末端添加元素,删除指定元素等操作。List、Set、Queue接口都继承自Collection并定义了各自不同的方法。如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。

 public interface Map<K,V> {

Map内部接口Entry<K,V>对应着Map的键值对。

具体介绍

迭代器

先介绍一下迭代器。迭代器本身也是一种设计模式,设计的初衷在于:容器的实现由很多种,而我们想对容器进行遍历操作的话,首先不应该关心容器实现的细节,其次遍历操作应该是轻量级的。迭代器统一了对容器的访问方式,同时创建它的代价很小。值得注意的是,Iterator只能单向移动。

 public interface Iterator<E> {

通过容器的iterator()方法拿到容器的迭代器

迭代器的next()获取下一个元素

hasNext()判断是否还有元素

remove()删除指定元素

ListIterator

ListIterator是Iterator的扩展之内,用于各种List类访问,支持双向移动。

Collection

List

List 承诺可以将元素维护在特定的序列中.List接口在Collection的基础上添加了大量的方法,使得可以再List中间插入和移除元素。

 public interface List<E> extends Collection<E> {

有两种类型的List,ArrayList和LinkedList

List类型优点缺点底层实现
ArrayList 随机访问元素较快 中间元素的插入和删除较慢 数组
LinkedList 中间元素的插入和删除,顺序访问的优化 随机访问元素较慢 双向链表

Set

Set不保存重复的元素,通常用于快速查找元素。值得一提的是,Set具有与Collection完全一样的接口,没有任何额外的功能。 存入的元素必须定义equals()方法

Set类型使用场景底层实现
HashSet 快速查找,元素必须定义hashCode() 链表
TreeSet 保持次序,元素必须实现Comparable接口 红-黑树结构
LinkedHashSet 维护次序的HashSet, 元素必须定义hashCode() 链表

Queue

除了并发应用,Queue仅有的两个实现是LinkedList和PriorityQueue, 其中LinkedList同时实现了List, Deque接口。它们的差异在于排序行为而不是性能。

​​​​​​​

原文链接

分享到:
评论

相关推荐

    Java容器类的深入理解

    Java容器类是Java编程中非常重要的一部分,它们为数据存储提供了丰富的结构和操作。本文主要关注的是Java中的两种主要容器类型:Collection和Map,以及它们的一些具体实现,如List接口下的ArrayList、LinkedList和...

    java容器详细解析

    Java容器是一种基本的数据结构,用于存储和管理对象。Java容器主要分为两大类:Collection和Map。 Collection Collection是一个独立元素的序列,这些元素都服从一条或多条规则。Collection接口提供了基本的操作...

    Java应用:两种Java容器类List和Set分析

    ### Java应用:两种Java容器类List和Set分析 #### 一、概述 在Java编程语言中,集合框架(Collections Framework)是处理数据的核心组件之一,它提供了存储和操作对象的各种方式。本文将深入探讨Java中的两种重要...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    Java容器类List、ArrayList、Vector及map、HashTable应用 List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的...

    JAVA容器对象整理

    这篇博客"JAVA容器对象整理"可能涵盖了关于Java中的不同容器类、接口以及它们的使用方式。在这里,我们将深入探讨一些核心的Java容器知识点。 1. **ArrayList与LinkedList** - `ArrayList`是一个基于数组实现的...

    Java容器类PPT学习教案.pptx

    学习Java容器类对于理解如何有效地管理和操作对象至关重要,因为它们提供了丰富的数据结构选择,可以根据实际需求选择最适合的数据存储方式。此外,掌握这些接口和类的使用能够提高代码的可读性、可维护性和性能。

    Java容器类学习心得.pdf

    Java容器类是Java标准库的重要组成部分,主要用于存储和管理对象。它们提供了丰富的接口和类,使得程序员能够方便地创建和操作各种数据结构,如列表、集合、映射等。以下是对Java容器类的一些核心知识点的详细说明:...

    java所有类结构(pdf文件)

    Java是一种广泛使用的面向对象的编程语言,其类结构是理解其核心概念的关键。这份"java所有类结构"的PDF文档提供了全面的Java类层次结构,对于深入学习Java编程至关重要。以下将详细介绍PDF文档中可能涉及的一些重要...

    Java容器类接口框架总览1

    Java容器类接口框架是Java...总的来说,Java容器类接口框架提供了丰富的数据结构和算法,使得在Java程序中处理各种数据场景变得简单高效。理解并熟练运用这些接口和类,能够帮助开发者编写出更加灵活、可维护的代码。

    Java容器类PPT课件.pptx

    Java容器类是Java编程语言中用于管理...总之,Java容器类提供了丰富的数据结构和操作,使得在处理对象集合时更加高效和灵活。通过选择合适的容器,开发者可以根据实际需求平衡性能和功能,提高代码的可读性和可维护性。

    Java 容器.pdf_电子版pdf版

    Java 容器详解 Java 容器是 Java 语言中的一种集合类库,主要包括 Collection 和 Map 两种类型。Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 Collection Collection 是一种集合接口...

    JAVA容器的作用和概览

    Java容器(集合框架)是Java编程中极其重要的部分,它提供了多种数据结构,如列表、集合和映射,以适应不同场景下的数据存储和处理需求。通过合理选择和使用不同的容器,可以优化代码的性能和可维护性。同时,了解和...

    java容器.pdf

    这些容器类提供了数据结构和算法,使得开发者可以方便地管理和操作数据。 在Java中,对象的创建涉及到内存的分配。当使用`new`关键字创建一个对象时,首先会在堆内存中分配对象空间,并初始化成员变量为默认值...

    容器的分类

    3. **重写toString()方法**:在Java中,每个类都继承了Object类,因此默认拥有了toString()方法。然而,这个方法返回的是类名和内存地址,对于实际应用来说通常不够直观。当我们需要打印或输出对象的具体信息时,就...

    Java语言程序设计与数据结构(第11版)_java_

    2. **面向对象编程**:Java是纯面向对象的语言,书中会深入讨论类、对象、继承、封装和多态等概念。此外,还会讲解接口、抽象类和访问修饰符的用法,帮助读者理解类间的关联和协作。 3. **集合框架**:Java集合框架...

    java对象容器.docx

    - 通常,开发者应优先考虑使用已有的容器实现,但如果需要特定行为,可以创建自定义容器类,继承自AbstractCollection、AbstractList、AbstractSet或AbstractMap,以便利用已实现的方法。 总结来说,Java对象容器...

    集合继承结构图.docx

    在Java中,集合被组织成一系列接口和类,这些接口和类之间存在着继承和实现的关系,构成了所谓的“集合继承结构”。这个结构清晰地定义了各种数据容器之间的联系。 首先,我们来看核心接口`Collection`,它是所有...

    Java容器类源码详解 Deque与ArrayDeque

    Java 容器类源码详解 Deque 与 ArrayDeque 主要介绍了 Java 容器类源码详解 Deque 与 ArrayDeque,Deque 接口继承自 Queue 接口,但 Deque 支持同时从两端添加或移除元素,因此又被成为双端队列。 Deque 接口继承自...

Global site tag (gtag.js) - Google Analytics