Java数组中部删除中部插入
public class Array {
// 求数组真实长度
public static int getRealNum(Object[] objs) {
// 定义一个计数器
int len = 0;
// 遍历数组,获得下标
for (int i = 0; i < objs.length; i++)
{
// i就是下标
// 获取下标对应的值
Object item = objs[i];
// 判断非法
if (item == null) {
break;
}
// 合法情况
len++;
}
return len;
}
// 未位添加算法
public static void append(Object[] objs,Object obj) {
// 获取数据
int realNum = getRealNum(objs);
int length = objs.length;
// 非法判断
if (realNum == length) {
return;
}
// 主要逻辑
objs[realNum] = obj;
}
// 未位删除
public static Object pop(Object[] objs) {
// 获取相关数据
int realNum = getRealNum(objs);
// 非法情况
if (realNum == 0) {
return null;
}
// 主逻辑
// 计算最后一个成员的下标
int lastIdx = realNum - 1;
// 拿到这个下标对应的值
Object obj = objs[lastIdx];
// 把最后一个成员的下标对应位置设置为null
objs[lastIdx] = null;
// 返回这个值
return obj;
}
// 中部插入算法
public static void insert(Object[] objs, int insertIndex, Object obj) {
// 获取相关数据
int realNum = getRealNum(objs);
// 非法验证
if (insertIndex >= realNum) {
return;
}
if (realNum == objs.length) {
return;
}
// 主逻辑
// 1,数据后移
int lastIdx = realNum - 1;
for (int i = lastIdx; i >= insertIndex; i--)
{
// i代表要操做的下标了
Object o = objs[i];
objs[i + 1] = o;
}
// 2,数据填入
objs[insertIndex] = obj;
}
// 中部删除
public static Object pop(Object[] objs,int delIndex) {
// 获取相关数据
int realNum = getRealNum(objs);
// 非法验证
if (delIndex >= realNum) {
return null;
}
// get del item
Object delItem = objs[delIndex];
// 主逻辑
// 1,位移
int lastIndex = realNum - 1; // 最后一个数据的下标
for (int i = delIndex; i <= lastIndex-1; i++)
{
// i代表了要操做的下标
// 获取下一个下标对应的值
Object o = objs[i + 1];
objs[i] = o;
}
// 2,设空
// 设置最后一个成员的位置,让它变为null
objs[lastIndex] = null;
// 返回数据
return delItem;
}
}