集合顺序存储结构的实现和操作
来源:互联网 发布:鱼鹰运输机数据 编辑:程序博客网 时间:2024/04/30 23:10
具体的Demo:
Set接口:
public interface Set {/** * @introduction 向集合中增加一个元素 * @param object * @return * @author Guo */public boolean add(Object object);/** * @introduction 从集合中删除一个元素 * @param object * @return * @author Guo */public boolean remove(Object object);/** * @introduction 判断一个元素是否属于这个集合 * @param object * @return * @author Guo */public boolean contains(Object object);/** * @introduction 返回集合中第index个元素的值 * @param index * @return * @author Guo */public Object value(int index);/** * @introduction 从集合中查找object并返回 * @param object * @return * @author Guo */public Object find(Object object);/** * @introduction 返回集合中元素的个数 * @return * @author Guo */public int size();/** * @introduction 判断集合是否为空 * @return * @author Guo */public boolean isEmpty();/** * @introduction 输出集合中所有的元素 * @author Guo */public void output();/** * @introduction 返回当前集合与参数集合set的并集 * @param set * @return * @author Guo */public Set union(Set set);/** * @introduction 返回当前集合与参数集合set的交集 * @param set * @return * @author Guo */public Set intersection(Set set);/** * @introduction 清除集合中的元素 * @author Guo */public void clear();}
SequenceSet类:
/** * @introduction 顺序存储结构的实现 * @author Guo * */public class SequenceSet implements Set{/** * @introduction minSize为数组的初始长度 * @introduction array底层数组 * @introduction len集合当前的长度 * @author Guo */private final int minSize = 10;private Object[] array;private int len;/** * @introduction 无参的构造方法,初始化数组 * @author Guo */public SequenceSet() {len = 0;array = new Object[minSize];}/** * @introduction 指定长度的构造方法 * @param length * @author Guo */public SequenceSet(int length) {if(length < minSize)length = minSize;len = 0;array = new Object[length];}@Overridepublic boolean add(Object object) {if(contains(object))return false;if(len == array.length) {Object[] arrayTemp = new Object[len*2];for(int i = 0; i < len; i++)arrayTemp[i] = array[i];array = arrayTemp;}array[len] = object;len++;return true;}@Overridepublic boolean remove(Object object) {int i;for(i = 0; i < len; i++)if(array[i].equals(object))break;if(i < len) {array[i] = array[len-1];len--;return true;}elsereturn false;}@Overridepublic boolean contains(Object object) {for(int i = 0; i < len; i++)if(array[i].equals(object))return true;return false;}@Overridepublic Object value(int index) {if(index <= 0 || index > len)return null;return array[index-1];}@Overridepublic Object find(Object object) {for(int i = 0; i < len; i++)if(array[i].equals(object))return array[i];return null;}@Overridepublic int size() {return len;}@Overridepublic boolean isEmpty() {return len == 0;}@Overridepublic void output() {for(int i = 0; i < len; i++)System.out.print(array[i] + " ");System.out.println();}@Overridepublic Set union(Set set) {SequenceSet dset = (SequenceSet)set;SequenceSet setTemp = new SequenceSet(len + dset.len);int i;for(i = 0; i < len; i++)setTemp.array[i] = array[i];setTemp.len = len;for(i = 0; i < dset.len; i++) {Object object = dset.array[i];if(!contains(object))setTemp.array[setTemp.len++] = object;}return setTemp;}@Overridepublic Set intersection(Set set) {SequenceSet dset = (SequenceSet)set;int length;if(len < dset.len)length = len;elselength = dset.len;SequenceSet setTemp = new SequenceSet(length);for(int i = 0; i < dset.len; i++) {Object object = dset.array[i];if(contains(object))setTemp.array[setTemp.len++] = object;}return setTemp;}@Overridepublic void clear() {len = 0;}}
操作类:
public class TestSequenceSet {@Testpublic void testAdd() {Set set = new SequenceSet();set.add("zhou");set.add("yan");set.add("ping");set.output();}@Testpublic void testRemove() {Set set = new SequenceSet();set.add("xu");set.add("jian");set.add("guo");set.remove("xu");set.output();if(!set.remove("xu"))System.out.println("Not In Set");}@Testpublic void testContains() {Set set = new SequenceSet();set.add("zhou");if(set.contains("zhou"))System.out.println("In Set");elseSystem.out.println("Not In Set");if(set.contains("xu"))System.out.println("In Set");elseSystem.out.println("Not In Set");}@Testpublic void testValue() {Set set = new SequenceSet();set.add("zhou");set.add("xu");System.out.println(set.value(1));System.out.println(set.value(4));}@Testpublic void testFind() {Set set = new SequenceSet();set.add("xu");set.add("zhou");System.out.println(set.find("zhou"));System.out.println(set.find("xxx"));}@Testpublic void testSize() {Set set = new SequenceSet();set.add("xu");set.add("zhou");System.out.println(set.size());}@Testpublic void testIsEmpty() {Set set = new SequenceSet();System.out.println(set.isEmpty());set.add("zhou");System.out.println(set.isEmpty());}@Testpublic void testUnion() {Set set = new SequenceSet();set.add("xu");set.add("zhou");Set setCopy = new SequenceSet();setCopy.add("xu");setCopy.add("yan");set.union(setCopy).output();}@Testpublic void testIntersection() {Set set = new SequenceSet();set.add("xu");set.add("zhou");Set setCopy = new SequenceSet();setCopy.add("zhou");set.add("guo");set.intersection(setCopy).output();}@Testpublic void testClear() {Set set = new SequenceSet();set.add("xu");set.add("zhou");set.clear();set.output();}}
- 集合顺序存储结构的实现和操作
- 栈的顺序存储结构和操作实现 数组实现
- JAVA实现队列的顺序存储结构和操作
- 集合的顺序存储及操作实现
- 集合链表存储结构的实现和操作
- 栈的顺序存储结构和实现
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 集合----顺序存储的实现
- 利用顺序存储结构实现双端队列的入队和出队操作
- 栈的顺序存储结构操作及实现
- 循环队列操作的实现-顺序存储结构
- 线性表的顺序存储结构的表示和实现
- 数据结构8:队列的顺序存储结构表示和实现
- 线性表的顺序存储结构和实现
- 栈的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 栈的顺序存储结构与操作
- 队列的顺序存储结构与操作
- Unity利用NGUI实现自定义鼠标
- C#采集CSDN单个博客所有文章
- BeginInvoke和EndInvoke方法
- hdu 4725
- char* m_strcat(char* dst, char* src);
- 集合顺序存储结构的实现和操作
- LA 3126
- int-float-double精度FloatDemo
- 谈一谈网络编程学习经验(06-08更新)
- 【整理】各种Python的IDE(集成开发环境)的总结和对比
- 黑马程序员-------.net基础知识三
- cocos2d学习 -- 相关基础概念
- [工具介紹]C#快速撰寫註解-GhostDoc
- VBS中解决路径中带空格的方法