package boluo;
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) {
// 顺序表,用一个类来代表顺序表,数组形式,用来存放数据,
// 属性:元素个数,数组,方法:增删查询
ListArray list = new ListArray();
list.add("123456");
list.add("boluo");
list.add("chuixue");
//list.delete(1);
//list.delete("123456");
System.out.println(list);
}
}
class ListArray {
// 用来存储集合数据的数组
String[] data;
int size = 0; // 元素个数
public ListArray() { // 赋值
data = new String[10]; // 默认给10的容量
}
public ListArray(int initCapcity) throws IllegalAccessException {
if (initCapcity < 0) { // 参数不能小于0
throw new IllegalAccessException("InitCapcity" + initCapcity);
} else {
data = new String[initCapcity];
}
}
//扩容方法 //数组扩容
public void grow() {
if (data.length <= 1) {
data = Arrays.copyOf(data, data.length + 1);
} else {
data = Arrays.copyOf(data, data.length + (data.length >> 1));
}
}
// 下标越界问题
public boolean isOut(int index) {
return index >= 0 && index < size;
}
// 添加元素, 默认添加到最后
public void add(String str) {
// 先判断数组是否需要扩容
if (size >= data.length) {
grow();
} else { // 添加元素,在数组末尾
data[size] = str;
size++;
}
}
// 插入元素
public void insert(String str, int index) {
if (!isOut(index)) {
System.out.println("下标越界");
}
if (size >= index) { //判断是否需要扩容
grow();
}
//插入元素,后面的往后移,所以从后往前遍历
for (int i = size - 1; i >= index; i--) {
data[i + 1] = data[i];
}
data[index] = str;
size++;
}
//根据下标进行删除
public void delete(int index) {
if (!isOut(index)) {
System.out.println("下标越界");
}
//删除元素之后,后面的元素全部往前移一位,必须从前面往后面遍历
for (int i = index; i < size - 1; i++) {
data[i] = data[i + 1];
}
size--;
}
//返回元素第一次出现的下标
public int indexOf(String str) {
for (int i = 0; i < size; i++) {
if (data[i].equals(str) || str != null && str.equals(data[i])) {
return i;
}
}
return -1;
}
//根据元素进行删除
public void delete(String str) {
//先取得元素的下标,然后再根据下标删除
int index = indexOf(str);
if (index != -1) {
delete(index);
}
}
public String toString() {
//创建StringBuilder对象进行拼接
StringBuilder sb = new StringBuilder("[");
//遍历数组---元素
for (int i = 0; i < size; i++) {
//拼接中间结果
sb.append(data[i]).append(", ");
}
//转成字符串
String s = sb.toString();
//截取子串---把最后的, 去掉
//判断是否有元素
if (size > 0)
s = s.substring(0, s.length() - 2);
//返回拼接结果
return s += "]";
}
}
ArrayList
于 2019-09-26 22:58:22 首次发布