实现自己的顺序表

二、创建一个MyArrayList类

public class MyArrayList {

    private String[] array = null;
    private int size = 0;
    private int capacity = 100;

    public MyArrayList() {
        this.array = new String[capacity];

    }
  }

一、顺序表实现的功能

(一)、顺序表的扩容

 public void add(String elem) {
        if (size >= capacity) {
            realloc();
        }
        array[size] = elem;
        size++;
    }

(二)、顺序表的插入元素

1、顺序表尾部插入

public void add(String elem) {
        if (size >= capacity) {
            realloc();
        }
        array[size] = elem;
        size++;
    }

2、顺序表中间位置插入

 public void add(int index, String elem) {
        if (index > size || index < 0) {
            return;
        }
        //需要把index尾椎的元素依次往后搬运,给index腾出元素
        if (size >= capacity) {
            realloc();
        }
        for (int i = size - 1; i >= index; i--) {
            array[i + 1] = array[i];
        }
        //搬运完了之后,把新的元素放到index位置上
        array[index] = elem;
        size++;
    }

(三)、顺序表的删除元素

1、按照元素下标删除

public String remove(int index) {
        if (index < 0 || index >= size) {
            return null;
        }
        String result = array[index];
        for (int i = index; i < size - 1; i++) {
            array[i] = array[i + 1];
        }
        size--;
        return result;
    }

2、按照元素的值删除

 //按照元素的值来删除,这个方法删除成功就返回true,失败就返回false
    public boolean remove(String elme) {
        int index = 0;
        for (; index < size; index++) {
            if (array[index].equals(elme)) {
                break;

            }
            if (index >= size) {
                return false;
            }

        }
        for (int i = index; i < size - 1; i++) {
            array[i] = array[i + 1];
        }
        size--;
        return true;
    }

(四)、顺序表的获取元素

public String get(int index) {
        if (index < 0 || index >= size) {
            throw new MyArrayListIndexOutOfRangeException("下标越界");
        }
        return array[index];
    }

(五)、顺序表根据下标修改元素

public void set(int index, String elem) {
        if (index < 0 || index >= size) {
            throw new MyArrayListIndexOutOfRangeException("下标越界");
        }
        array[index] = elem;
    }

(六)、顺序表判断元素书否存在

public boolean contains(String elem) {
        for (int i = 0; i < size; i++) {
            if (array[i].equals(elem)) {
                return true;
            }
        }
        return false;
    }

(七)、 顺序表查找元素位置

public int index0f(String elem) {
        for (int i = 0; i < size; i++) {
            if (array[i].equals(elem)) {
                return i;
            }

        }
        return -1;
    }

(八)、顺序表的打印

 public String toString() {
//        return Arrays.toString(array);
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("[");
        for (int i = 0; i < size; i++) {
            stringBuilder.append(array[i]);
            if (i < size - 1) {
                stringBuilder.append(",");
            }
        }
        stringBuilder.append("]");
        return stringBuilder.toString();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值