数据结构之字符串ADT
来源:互联网 发布:云南旅游市场分析数据 编辑:程序博客网 时间:2024/05/16 09:16
一、前言:
在Java语言中,可以用两种方法表示ADT的规格说明:
a.ADT的规格说明用抽象类(Abstract Class Declaration)表示,ADT的实现用继承改抽象类的具体类声明(Concrete Class Declaration)表示。
b.ADT的规格说明用Java接口(interface)表示,ADT的实现用实现该接口的类表示。
二、示例:
字符串ADT规格说明:
package com.java.datastructure.mystring;public interface IMyString {public int length();//字符串长度public char charAt(int index);//返回字符串中下标index所对应的字符public boolean equals(IMyString myString);//比较两个字符串的内容是否一致public int compareTo(IMyString myString);//比较两个字符串的大小public MyString subString(int begin, int end);//截取字符串public MyString concat(IMyString myString);//拼接字符串}
字符串ADT实现:
package com.java.datastructure.mystring;public class MyString implements IMyString{private char[] array;/** * 将其转换为java.lang.String对象 */public String toString(){return new String(array);}/** * 拼接字符串 * @param myString * @return MyString 拼接后的新字符串 */public MyString concat(IMyString myString){MyString ms = (MyString) myString;int len = array.length + ms.length();char[] newArray = new char[len];int i = 0, j = 0;while(j<array.length){newArray[i++] = array[j++];}j=0;while(j < ms.array.length){newArray[i++] = ms.array[j++];}return new MyString(newArray);}/** * 比较大小 * @param myString * @return 1 : 大 ; -1 :小 ;0 : 相等 */public int compareTo(IMyString myString){MyString ms = (MyString)myString;int self = array.length;int other = ms.length();for(int i = 0; i < Math.min(self, other); i++){int comp = array[i] - ms.array[i];if(comp!=0){return comp;}}if(self > other){return +1;}else if(self < other){return -1;}else {return 0;}}/** * 根据开始下标和结束下标,截取字符串 * @param begin * @param end */public MyString subString(int begin, int end){if(begin<0 || begin>=array.length || end<0 || end>=array.length || begin>end){throw new IndexOutOfBoundsException();}int len= end - begin;char[] newArray = new char[len];for(int i = 0; i < len; i++){newArray[i] = array[i+begin];}return new MyString(newArray);}/** * 判断两个字符串是否相同 * @param myString */public boolean equals(IMyString myString){MyString ms = (MyString)myString;if(ms.length() != array.length){return false;}for(int i=0; i < array.length; i++){if(array[i] != ms.array[i]){return false;}}return true;}/** * 根据下标,得到所在元素 * @param index 下标 */public char charAt(int index){if(index < 0 || index > array.length){throw new IndexOutOfBoundsException();}return array[index];}/** * 计算字符串长度 */public int length() {return array.length;}/** * Constructors */public MyString(){this.array = new char[0];}/** * Constructors * @param that */public MyString(char[] that){array = new char[that.length];for(int i=0; i<that.length; i++){array[i] = that[i];}}/** * @param args */public static void main(String[] args) {}}
0 0
- 数据结构之字符串ADT
- 数据结构之表ADT
- 数据结构笔记之图(ADT)
- 数据结构(二)之栈ADT
- 数据结构(三)之队列ADT
- 数据结构之 字符串
- redis数据结构之字符串
- 数据结构之字符串
- 数据结构之字符串
- 数据结构之字符串
- 数据结构之字符串
- 数据结构之字符串
- 数据结构之回文字符串
- 数据结构算法之字符串
- python数据结构之字符串
- python数据结构之字符串
- 数据结构之:字符串
- 数据结构线性表篇之顺序表(ADT)
- 监督学习,非监督学习与半监督学习
- iOS国际化时遇到的异常:read failed: the data couldn't be read because it isn't in the correct format
- BZOJ 3747: [POI2015]Kinoman
- 编写PHP扩展
- IOS IAP APP内支付 Java服务端代码
- 数据结构之字符串ADT
- 支付宝即时到账接口PC和wap移动端的区别
- Java多线程之synchronized和volatile
- HDU 1000 A + B Problem
- okhttp使用,支持断点续传
- 心灵鸡汤之20160429
- 换行符
- novnc的替代品Guacamole
- win10主机如何在校园网的条件下在虚拟机上安装Hadoop并实现远程SSH操控