顺序表-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));

    }
}
目录
相关文章
|
11月前
顺序表的简单原理实现
顺序表的简单原理实现
|
5月前
|
存储 Java
Java实现单链表
Java实现单链表
36 0
|
Java
|
Java C语言
Java实现链表
Java实现链表
|
机器学习/深度学习 Java 编译器
循环队列讲解,以及Java实现代码
循环队列讲解,以及Java实现代码
54 0
|
存储 Java
java实现顺序队列
队列是一种特殊的线性表,他的特殊性体现在只能在尾部进行插入,头部进行删除,所以可以将队列看成是一种特殊的线性表。他的鲜明特点就是“先进先出”或者叫“后进后出”。队列这种数据结构的实现一般都是基于线性表的,而线性表又有顺序表和链表两种,所以队列的实现就又分为顺序队列和链队列。这篇文章用以总结使用顺序表来实现的队列–顺序队列。
141 0
java实现顺序队列
|
存储 Java
单链表的基本操作(Java实现)
单链表的基本操作(Java实现)
273 0
单链表的基本操作(Java实现)
|
Java
java实现双链表
java实现双链表
162 0
java实现双链表
|
Java
Java实现单链表以及各种功能
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
144 0
Java实现单链表以及各种功能