顺序表的实现(实现ArrayList)
1.顺序表的实现
使用数组实现ArrayList
代码
/*
*路人假helloWorld
*/
package com.cjj.sort;
import java.util.Arrays;
public class MyArrayList<T> {
//存储元素的数组
private T[] eles;
public MyArrayList(){
eles = (T[]) new Object[0];
}
//清空表
public void clear(){
eles = (T[])new Object[0];
}
//判断当前线性表是否为空表
public boolean isEmpty(){
if(eles.length == 0){
return true;
}else{
return false;
}
}
//获取线性表的长度
public int length(){
return eles.length;
}
//获取指定位置的元素
public T get(int i){
return eles[i];
}
//向线性表中添加元素
public void add(T t){
T[] newEles = (T[])new Object[eles.length+1];
for (int i = 0; i < eles.length; i++){
newEles[i] = eles[i];
}
newEles[newEles.length-1] = t;
eles = newEles;
}
//在线性表指定位置插入元素
public void insert(T t,int i){
T[] newEles = (T[])new Object[eles.length+1];
for (int j = 0; j < newEles.length; j++){
//判断插入位置是否合理
if (i < 0 || i > eles.length-1){
// throw new RuntimeException("下标越界!");
System.out.println("下标越界!");
}else if (j < i){
newEles[j] = eles[j];
}else if (j == i){
newEles[j] = t;
}else{
newEles[j] = eles[j-1];
}
}
eles = newEles;
}
//删除指定i处的元素并返回改元素
public T remove(int i){
T result = eles[i];
for (int j = i+1; j < eles.length; j++){
eles[j - 1] = eles[j];
}
//将线性表长度减1
T[] newEles = (T[])new Object[eles.length-1];
for (int j = 0; j < newEles.length; j++){
newEles[j] = eles[j];
}
eles = newEles;
return result;
}
//查找元素第一次出现的位置
public int indexOf(T t){
int i = -1;
for (i = 0; i < eles.length; i++){
if (t.equals(eles[i])){
return i;
}
}
return -1;
}
//打印线性表中的所有元素
public void show(){
System.out.println(Arrays.toString(eles));
}
}
测试
package com.cjj.test;
import com.cjj.sort.MyArrayList;
public class TestMyArrayList {
public static void main(String[] args) {
MyArrayList<String> arr1 = new MyArrayList<>();
System.out.println(arr1.isEmpty());
arr1.add("喜羊羊");
arr1.add("美羊羊");
arr1.add("懒羊羊");
arr1.add("沸羊羊");
arr1.add("灰太狼");
System.out.println(arr1.isEmpty());
arr1.show();
System.out.println(arr1.length());
System.out.println("获取指定位置的元素:" + arr1.get(3));
// System.out.println("获取指定位置的元素" + arr1.get(-1));
// System.out.println("获取指定位置的元素" + arr1.get(10));
arr1.insert("红太狼",2);
arr1.show();
System.out.println(arr1.remove(1));
arr1.show();
System.out.println(arr1.indexOf("喜羊羊"));
System.out.println(arr1.indexOf("喜羊"));
arr1.clear();
arr1.show();
}
}
测试结果


浙公网安备 33010602011771号