顺序表四大件:增删改查
Posted *平芜尽处是春山*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表四大件:增删改查相关的知识,希望对你有一定的参考价值。
核心代码
package seqlist;
import java.util.Arrays;
public class DynamicArray
//定义属性
//elementData就是具体存储元素的数组
private int[] elementData;
//当前动态数组中存储了几个元素
private int size;
public DynamicArray()
this.elementData = new int[10];
public DynamicArray(int size)
elementData = new int[size];
/**
* 在数组头部添加元素
*/
public void addFirst(int data)
//此时小数组内部已满,需要扩容
if (size == elementData.length)
grow();
for (int i = size - 1; i >= 0; i--)
elementData[i + 1] = elementData[i];
//此时index=0,数组头部空间空出
elementData[0] = data;
size++;
/**
* 在数组的尾部添加元素
*/
public void addLast(int data)
if (size == elementData.length)
grow();
elementData[size] = data;
size++;
/**
* 在数组的索引index处添加元素
*/
public void addIndex(int index,int data)
//先判断边界条件,index是否合法
if(index < 0 || index > size)
System.out.println("index非法,无法进行插入");
return;
//判断当前数组是否已满
if(size == elementData.length)
grow();
//数据插入
if(index == 0)
addFirst(data);
if(index == size)
addLast(data);
else
//在数组的中间位置插入
for (int i = size - 1; i >= index ; i--)
elementData[i+1] = elementData[i];
//此时index位置空出
elementData[index] = data;
size++;
/**
* 内部扩容方法
*/
private void grow()
int oldLength = elementData.length;
int newLength = oldLength << 1;
//将原数组搬移到新数组
elementData = Arrays.copyOf(elementData,newLength);
//取得当前数组长度
public int getSize()
return size;
/**
* 将当前动态数组转换为字符串
*/
public String toString()
//每个元素都在elementData数组里存储
String ret = "[";
for (int i = 0; i < size; i++)
ret += elementData[i];
if (i != size - 1)
ret += ",";
ret += "]";
return ret;
/**
* 得到指定元素的数据
*/
public int get(int index)
if(rangeCheck(index))
return elementData[index];
return -1;
/**
* 判断当前集合中是否已经包含指定元素Data
*/
public boolean contains(int data)
for (int i = 0; i < size; i++)
if(elementData[i] == data)
return true;
return false;
/**
* 删除集合中下标为index的元素
*/
public void remove(int index)
if(rangeCheck(index))
for (int i = index; i < size; i++)
elementData[i] = elementData[i + 1];
size--;
//将最后一个元素删除,元素重置为零
elementData[size] = 0;
/**
* 按值删除
*/
public void removeValue(int value)
for (int i = 0; i < size; i++)
while(elementData[i] == value && i < size)
remove(i);
/**
* 将指定位置index的元素修改为新值newData
*/
public int set(int index,int newData)
if(rangeCheck(index))
int oldValue = elementData[index];
elementData[index] = newData;
return oldValue;
return -1;
/**
* 检验当前传入的index是否合法
*/
private boolean rangeCheck(int index)
if (index < 0 || index >= size)
System.out.println("当前index非法");
return false;
return true;
public static void main(String[] args)
DynamicArray dynamicArray = new DynamicArray();
dynamicArray.addLast(12);
dynamicArray.addLast(7);
dynamicArray.addLast(3);
dynamicArray.addFirst(9);
dynamicArray.addFirst(5);
dynamicArray.addFirst(17);
System.out.println(dynamicArray);
dynamicArray.addIndex(2,4);
System.out.println(dynamicArray);
dynamicArray.removeValue(7);
System.out.println(dynamicArray);
注意:
1、是否需要扩容
2、按索引插入时,输入的index是否合法
以上是关于顺序表四大件:增删改查的主要内容,如果未能解决你的问题,请参考以下文章