http://www.open-open.com/lib/view/open1474167415464.html
基本容器:
集合:
1.set:元素之间没有关系,确定性,不重复性,无序性。
线性结构:
1.线性表:一个元素接着一个元素,随意位置可以插入删除。
2.队:先进先出,只准在尾部插入,在头部读出。
3.栈:后进先出,只准在一端插入和删除。
树状结构:
1.树:子节点只有一个父节点,父节点可以有多个子节点。
2.二叉树:每个节点至多有两个子节点的树。
网状结构:
1.图:节点之间可以任意连接。
其他容器或复合容器:
hash表:利用hash函数根据值查找该值所在的地址(值和地址有一个函数关系,存储地址=f(元素值),例如:存储地址=元素值的平方),若值的地址冲突,可以用解决冲突的方法,例如:可以用链表的形式挂一个地址。
索引表:在一个有顺序的线性表上抽取一些值组成索引表(索引表的值也是有序的)方便查找。
Map:主要用来存键值对。键是一个列表来存储,对应值用另外一个列表来存。通过键的地址能找到值的地址。(例如:两个同样大小的数组,一个存键一个存值,键和值的下标相同)
容器的存储方式:
顺序存储:(地址空间连续)(读取指定位置的元素方便,插入和删除需要依次移动元素麻烦),
链式存储:(前个元素有指针指向下个元素)(读取指定位置的元素需要从头依次查找麻烦,插入和删除只需移动指针方便。)。
-------------------------------------------------------------------------------------------------------------------------------------
1.1
1.2
1.集合set
HashSet:Hash表存储set,元素不能重复。
-------------------------------------------
TreeSet:元素是排序,默认是自然顺序。也可自己传Comparator
-------------------------------------------
LinkedHashSet:元素有插入的顺序。
------------------------------------------------------------------------------------
2.list,queue,stack(线性表,队,栈)
lis(线性表)t:
Arraylist:是线性存储,就是用数组实现的,它会动态增加他的50%容量。善于查找。
LinkedList:是链式存储,善于增加删除。使用时LIst list=new LinkedList();
--
vector:和ArrayList基本一样,它会动态增加他的翻倍容量,也可设置增长因子,只是它是线性安全的。
--
并发包的:
------------------------------------------------------------------------------------
queue(队):
LinkedList:它实现Queue接口。使用时:Queue queue = new LinkedList();
--
并发包的:
-------------------------------------------
PriorityQueue:带有先级的队列,每次从队列中取出的是具有最高优先权的元素。构造时需要传Comparator,如果没有数字默认是小的在队列头,字符串则按字典序排列。
------------------------------------------------------------------------------------
栈:
--
stack:线性安全的栈。数组现实的。
------------------------------------------------------------------------------------
deque(双端队列):技能实现队的功能又能显示栈的功能。:
ArrayDeque:是线性存储,就是用数组实现的双端队列。
LinkedList:它实现Deque接口。使用时:Deque deque= new LinkedList();
--
并发包的:
------------------------------------------------------------------------------------
3.map
HashMap:用哈希表的方法存储键值对。允许key为null
--
HashTable:和nashmap相似,只是它是线程安全的。不允许key为null
-------------------------------------------
TreeMap:是排序的容器,用iterator输出是排序好的,默认是按自然顺序,也可构造时传Comparator自定义顺序,键底层是二叉树数据结构。
-------------------------------------------
LinkedHashMap:能保持插入的顺序。在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。实体虽然是以Hash的顺序存放在Hash表中,但是实体之间却用链表的形式保持了存入的先后关系。
-------------------------------------------------------------------------------------------------------------------------------------
ComParable是比较接口compareTo(T another);是需要比较的类自身实现。类自身实现。
ComParator也是比较接口compare(T lhs, T rhs);是可以传一个类的两个实例进行比较。类外实现
Collections:集合类的,排序或其他功能工具。
Arrays:普通数组(int[] a)的,排序或其他功能的工具。
相关推荐
数据结构和Java集合框架是Java编程中至关重要的概念,它们是高效编程和算法设计的基础。在Java中,数据结构指的是组织、存储和管理数据的方式,而集合框架则是一组接口和类,为处理各种数据结构提供了统一的API。 ...
集合是一种基本的数据结构,它包含不重复的元素。集合的并、交和差运算在处理多个集合时非常常见,这些运算是集合论中的基础概念,也经常在编程中用于处理数据。 1. **集合的并**: 集合的并运算(Union)是指将两个...
本压缩包“数据结构集合(C++版)”很可能包含了多种经典数据结构的C++实现,如线性表、栈、队列、链表、树、图、散列表、堆等。这些数据结构在算法设计和问题解决中扮演着基础角色。 1. **线性表**:是最基本的...
Java容器集合(equals和hashCode+基础数据结构+ArrayList+Vector和LinkedList) Java容器集合是Java中的一种基础数据结构,用于存储和管理数据。其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,...
在C++Builder中,数据结构的实现通常涉及到STL(Standard Template Library)的使用,包括容器(如vector、list、set、map等)、迭代器、算法等。通过这份教程,你可以了解到如何利用C++Builder的这些工具来构建各种...
- 数据结构的逻辑结构:包括集合、线形结构、树结构和图结构等。 - 数据结构的存储结构:分为顺序存储结构和链式存储结构。顺序存储结构利用数组存储数据元素,而链式存储结构使用指针或引用连接数据元素。 ### ...
本主题将深入探讨C#中的泛型、集合、迭代器以及数据结构的应用,这些都是软件开发中的核心概念。 首先,泛型是C#中一个强大的特性,它允许我们在不指定具体类型的情况下编写代码。这样可以提高代码的重用性,减少...
数组可以看作是同类型数据的集合,而指针则提供了间接访问内存的能力,这在实现链式数据结构时至关重要。 接着,我们将重点关注线性数据结构,如数组、链表和队列。数组是一种连续存储的数据结构,查找速度快,但...
数据结构是计算机科学中的核心概念,它涉及到如何高效地存储和操作数据。在这个主题中,C++被广泛用作编程语言,因为它提供了丰富的特性和模板系统,使得数据结构的实现更为简洁和高效。以下是根据标题和描述中提到...
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和管理数据。在"数据结构教程上机实验指导"这本书中,作者李春葆提供了实践性的学习资源,帮助学生深入理解数据结构的概念并提升编程技能。...
1. **数组**:数组是最基础的数据结构,它是一组相同类型的元素的集合,可以通过索引来访问每个元素。C++中的数组可以直接定义,也可以通过动态分配内存创建。 2. **链表**:链表是由一系列节点组成,每个节点包含...
数据结构是计算机科学中的核心概念,它涉及到如何有效地组织和管理数据,以便于高效地进行存储、检索和处理。STL(Standard Template Library,标准模板库)是C++编程语言中的一部分,它为数据结构和算法提供了强大...
数据结构是计算机科学中至关重要的一个领域,它研究如何有效地组织和存储数据,以便于高效地访问和修改。C#是一种面向对象的编程语言,它提供了丰富的特性和库支持来实现各种数据结构。在这个C#语言版的数据结构教程...
在C++中,我们可以利用标准模板库(STL)来实现各种数据结构,例如vector(动态数组)、list(双向链表)、set(红黑树实现的集合)、map(红黑树实现的键值对映射)等。STL提供了一套强大的容器和算法,使得程序员...
5. 图(Graph):是由顶点的有穷非空集合和顶点之间边的集合组成的数据结构。图用于表示各种复杂的关系和网络,在很多领域都有应用。 6. 搜索树(Search Tree):是在存储数据的节点上存储了某种排序信息的树结构。...
使用STL可以更方便地实现各种数据结构,如map容器能够快速查找键对应的值。 递归是另一种常见的算法设计方法,适用于解决具有自相似性质的问题。递归函数通过自己调用自己来简化问题。 综上所述,数据结构与算法是...
4. STL(标准模板库):包括容器(如vector、list、set、map)、迭代器、算法和函数对象,提供强大的数据结构和算法支持。 通过阅读《数据结构与算法分析C++描述》,读者不仅能掌握数据结构和算法的基本概念,还能...
作者将C++语言作为算法描述语言,应用包含规范化的数据结构的标准模板库,集中讲述了数组、向量、表、关联树容器,以及集合、映射、堆、哈希表和图等数据结构及其算法,重点讨论了如何高效地存储大型数据集合,涵盖...
数据结构是指在计算机中组织和存储数据的方式,而STL(Standard Template Library,标准模板库)是C++编程语言中的一组通用、高效、可重用的容器、迭代器、算法和函数对象。下面我们将深入探讨这两个概念以及它们...
本文将深入探讨Java集合框架的核心概念、数据结构以及相关的算法。 首先,集合框架主要由两个核心部分组成:集合(Collection)和图(Map)。集合是用来存储单一元素的容器,而图则用于存储键值对映射关系。在...