用数据结构(Java版)字符串和多维数组的应用编写可实现完整代码:变量字符串类MyStringBuffer声明成员方法删除this串的第i个字符
时间: 2024-11-20 20:42:20 浏览: 9
主要内容-数组与字符串
在Java中,我们可以创建一个名为`MyStringBuffer`的类,它是一个线程安全的字符序列,可以用于类似数组的操作,包括添加、删除字符等。以下是如何实现删除指定索引位置字符的代码:
```java
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class MyStringBuffer {
private final char[] chars; // 字符数组存储字符串内容
private int length = 0; // 当前长度
private final Lock lock = new ReentrantLock(); // 锁用于保证线程安全
public MyStringBuffer(String str) {
chars = str.toCharArray();
}
// 删除第i个字符
public void deleteCharAt(int i) {
if (i < 0 || i >= length) {
throw new IndexOutOfBoundsException("Index out of range");
}
lock.lock(); // 获取锁
try {
System.arraycopy(chars, i + 1, chars, i, length - i - 1); // 将后面的字符向前移动
length--; // 更新长度
} finally {
lock.unlock(); // 释放锁
}
}
// 其他辅助方法(如获取字符、判断是否为空等)
public char getCharAt(int index) {
checkValidIndex(index);
return chars[index];
}
public boolean isEmpty() {
return length == 0;
}
// 验证索引是否有效
private void checkValidIndex(int index) {
if (index < 0 || index >= length) {
throw new IndexOutOfBoundsException("Invalid index");
}
}
// 示例如何使用这个类
public static void main(String[] args) {
MyStringBuffer myStr = new MyStringBuffer("Hello, World!");
myStr.deleteCharAt(7); // 删除逗号
System.out.println(myStr.getChars()); // 输出 "Hello, World!"
}
}
```
阅读全文