Java实现是吗?

摘要:package Data_Structure; import java.util.NoSuchElementException; public final class MyString { private final char[] data
package Data_Structure; import java.util.NoSuchElementException; public final class MyString { private final char[] data; public MyString(){ data = new char[0]; } //根据传入字符串构造串 public MyString(String str){ data = new char[str.length()]; for(int i=0;i<str.length();i++){ data[i]= str.charAt(i); } } //根据传入MyString构造字符串,等同于构造赋值方法 public MyString(MyString str){ if(str==null) throw new IllegalArgumentException("参数不能为null"); data = new char[str.length()]; for(int i=0;i<str.length();i++) data[i] = str.charAt(i); } public MyString(int length){ data = new char[length]; } //该操作将覆盖目标原来的内存 public static MyString strCopy(MyString res){ if(res==null) throw new IllegalArgumentException("参数不能为null"); return new MyString(res); } //返回字符串长度 public int length(){ return this.data.length; } //返回索引所在字符 public char charAt(int index){ return this.data[index]; } //空返回真,反之返回假 public boolean empty(){ if(this.length()==0) return true; else{ return false; } } // 比较字符串大小 public int compareTo(MyString str) { // 1. 异常选型建议:参数为空通常抛出 NullPointerException 或 IllegalArgumentException if (str == null) { throw new NullPointerException("Comparison target is null"); } int len1 = this.length(); int len2 = str.length(); // 2. 核心:确定比较的边界限制 int lim = Math.min(len1, len2); int i = 0; while (i < lim) { char c1 = this.charAt(i); char c2 = str.charAt(i); if (c1 != c2) { // // 3. 发现不相等的字符,直接返回差值 return c1 - c2; } i++; } // 4. 重要:如果运行到这里,说明在 min(len1, len2) 范围内字符全部相等 // 此时根据长度判断,例如 "abc" < "ab
阅读全文