顺序表-Java实现

简介: 顺序表

顺序表数据结构

public void Insert(E data,int index ){
   
        //插入操作要检查位置是否合法
        //有些位置不能插入

        if (index < 0 || index > length){
   
            throw new IllegalArgumentException("插入位置不合法,合法位置是:0 ~ " + length);
        }

        if (length >= capacity){
   
            int newCapacity = capacity + (capacity >> 1);
            //扩容为原来的1.5倍
            Object[] newArray = new Object[newCapacity];
            System.arraycopy(array,0,newArray,0,length);
            array = newArray;
            capacity = newCapacity;
            //JVM处理垃圾
        }

        for (int i = length;i > index;i--) {
   
            array[i] = array[i -1];
        }
        array[index] = data;
        length++;
    }


 @SuppressWarnings("unchecked")
    public E Delete(int index) {
   
        if (index < 0 || index > length - 1){
   
            throw new IllegalArgumentException("删除位置不合法,合法位置是:0 ~ "+(length -1));
        }
        E data = (E) array[index];
        for (int i = index; i < length; i++) {
   
            array[i] = array[i+1];
        }
        length--;
        return data;
    }


 @SuppressWarnings("unchecked")
    public E Get(int index){
   
        if (index < 0 || index > length - 1) {
   
            throw new IllegalArgumentException("获取位置不合法,合法位置是:0 ~ "+(length -1));
        }
        return (E) array[index];
    }


总览

package com.collection;

import java.util.Arrays;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/29 16:44
 */

public class ArrayList <E>{
   


    private int length = 0;
    //数组长度记录

    private int capacity = 10;
    private Object[] array = new Object[capacity];


    /**
     * 增删改查操作实现
     */

    public void Insert(E data,int index ){
   
        //插入操作要检查位置是否合法
        //有些位置不能插入

        if (index < 0 || index > length){
   
            throw new IllegalArgumentException("插入位置不合法,合法位置是:0 ~ " + length);
        }

        if (length >= capacity){
   
            int newCapacity = capacity + (capacity >> 1);
            //扩容为原来的1.5倍
            Object[] newArray = new Object[newCapacity];
            System.arraycopy(array,0,newArray,0,length);
            array = newArray;
            capacity = newCapacity;
            //JVM处理垃圾
        }

        for (int i = length;i > index;i--) {
   
            array[i] = array[i -1];
        }
        array[index] = data;
        length++;
    }


    @SuppressWarnings("unchecked")
    public E Delete(int index) {
   
        if (index < 0 || index > length - 1){
   
            throw new IllegalArgumentException("删除位置不合法,合法位置是:0 ~ "+(length -1));
        }
        E data = (E) array[index];
        for (int i = index; i < length; i++) {
   
            array[i] = array[i+1];
        }
        length--;
        return data;
    }


    @SuppressWarnings("unchecked")
    public E Get(int index){
   
        if (index < 0 || index > length - 1) {
   
            throw new IllegalArgumentException("获取位置不合法,合法位置是:0 ~ "+(length -1));
        }
        return (E) array[index];
    }

    @Override
    public String toString() {
   
        System.out.println(length);
        StringBuilder builder = new StringBuilder();
      for(int i = 0;i < length; i++) {
   
          builder.append(array[i]).append(" ");
      }
      return builder.toString();
    }
}


测试

package com.collection;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/29 17:21
 */

public class Main {
   
    public static void main(String[] args) {
   
        ArrayList<Integer> list = new ArrayList<Integer>();
       for (int i = 0;i < 5;i++){
   
           list.Insert(i,i);
       }

       System.out.println(list);

       list.Delete(3);

       //删除对应下标数据,不是位序
        System.out.println(list);

        System.out.println(list.Get(2));

    }
}
目录
相关文章
数据结构入门(C语言版)线性表中顺序表介绍及接口实现(下)
在顺序表中,头插相对于尾插来说就不是那么简单了,这里主要是让顺序表整体向后移动,再在头部插入数据。
|
8月前
|
存储 Java
Java实现单链表
Java实现单链表
57 0
|
Java C语言
Java实现链表
Java实现链表
|
Java
|
存储 机器学习/深度学习 算法
数据结构入门(C语言版)线性表中顺序表介绍及接口实现(上)
不论在程序员的工作上,还是在学习或是考研上,数据结构都是一门非常重要且值得我们一直研究探索的学科,可以说数据结构和算法就是编程的核心。OK,接下来我们来到数据结构的入门第一步就是学习线性表,接下来由作者来详细介绍数据结构第一章线性表。
【Java实现】反转链表
【Java实现】反转链表
【Java实现】反转链表
|
Java
java实现双链表
java实现双链表
192 0
java实现双链表
|
存储 Java
单链表的基本操作(Java实现)
单链表的基本操作(Java实现)
324 0
单链表的基本操作(Java实现)
|
Java
Java实现单链表以及各种功能
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
156 0
Java实现单链表以及各种功能
|
Java
Java实现双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。
104 0

热门文章

最新文章

下一篇
开通oss服务