集合顺序存储结构的实现和操作

来源:互联网 发布:鱼鹰运输机数据 编辑:程序博客网 时间: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();}}


 

原创粉丝点击