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
