集合的定义
昨天我们聊了 数据结构的由来与分类 ,根据数据之间关系的不同,我们把数据结构分为了四类逻辑结构,其中第一类就是集合结构.今天我们就来详细的讲一下集合结构.
集合是数据逻辑结构中的一种,它是由一个或者多个没有任何关系的数据元素聚集而成,集合中各个数据元素之间不存在任何逻辑依赖关系.跟数学中的集合一样,集合中不会有相同的数据元素.
下图可是个集合示意图 (各个美女都处在同一个篮子里,但是他们之间没有任何关系哦),你 get 到了吗?
集合的抽象数据类型
要想从与语言无关的层次描述集合,那就是抽象数据类型,抽象数据类型包括数据和操作两部分,数据部分为集合,可以用任何一种存储方式存储,比如昨天讲的顺序存储结构和链式存储结构,这两种存储结构我们都会讲到.操作部分是对集合的各种运算,包括插入元素,删除元素,查找元素等等.
集合的抽象数据类型定义如下:
ADT Set is
Data:
采用任何一种存储方法存储的一个集合
Operation: initSet() // 初始化集合
add(obj) // 添加元素
remove(obj) // 删除元素
find(obj) // 查找元素并返回
value(i) // 返回集合中第 i 个元素的值
contains(obj) // 集合中是否包含某个元素
size() // 获取集合的长度
isEmpty // 判断集合是否为空
clear() // 清空集合
output() // 输出集合中的所有值
union(set) // 求两个集合的并集
intersection(set) // 求两个集合的交集
集合的顺序存储结构和操作实现
我用 Java 实现集合的顺序存储结构,根据上面的抽象数据类型的操作,首先定义一个接口 Set, 包含集合的各种操作,然后让子类实现该接口,覆写各种操作方法,并且子类用数组来存储数据部分
Set 接口
集合的顺序存储结和构操作实现如下图代码, 详细说明都在注释里面
SequenceSet 类
测试类:
马上就要凌晨一点半了!!!明天还要上班!一不小心就写了两三个小时了,别看内容不多,代码可都是一个个码的,码完经过测试才敢发出来,今晚就聊到这里了,集合的顺序存储结构比较简单,明天接着聊集合的链式存储结构,欢迎大家吐槽关注,谢谢
来源: http://www.jianshu.com/p/f8a7d52787eb