删除数组中一个或者多个连续的元素

简介: 本文允许转载,但请标明出处:http://blog.csdn.net/wanghantong/article/details/46730591, 版权所有 参考StringBuffer的底层源码实现: public final class StringBuffer  extends AbstractStringBuilder implements java.io.Seriali

本文允许转载,但请标明出处:http://blog.csdn.net/wanghantong/article/details/46730591, 版权所有


参考StringBuffer的底层源码实现:

public final class StringBuffer  extends AbstractStringBuilder implements java.io.Serializable, CharSequence

<span style="font-size:14px;">char[] value;
int count;
public AbstractStringBuilder delete(int start, int end) {
        if (start < 0)
            throw new StringIndexOutOfBoundsException(start);
        if (end > count)
            end = count;
        if (start > end)
            throw new StringIndexOutOfBoundsException();
        int len = end - start;
        if (len > 0) {
            System.arraycopy(value, start+len, value, start, count-end);
            count -= len;
        }
        return this;
    }</span>
本文允许转载,但请标明出处:http://blog.csdn.net/wanghantong/article/details/46730591, 版权所有

策略解析:
<span style="font-size:14px;">Test  System.arraycopy()方法:
String[] array1 = { "1", "2", "3", "4", "5" };
//System.arraycopy(value, start+len, value, start, count-end); 
//System.arraycopy(src, srcPos, dest, destPos, length);
System.arraycopy(array1, 4, array1, 3,1);
//从索引为4的元素开始,替换了从起始索引为3的元素,替换长度为1
printArray(array1);//1 2 3 5 5</span>

本文允许转载,但请标明出处:http://blog.csdn.net/wanghantong/article/details/46730591, 版权所有
分析count -= len;
数组元素替换之后,就变成12355,
count = 源数组的元素个数
len = 我们要替换的末索引-始索引 = (期望被删除的元素的个数)
count -= len; // 表示数组被删除后,长度减少了len个。所以count -= len;
12355 取 4个长度。。就是1235,那么看结果,4已经被删除掉了。。。

再说System.arraycopy(src, srcPos, dest, destPos, length);这个方法
 public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);
看见native了,不用多讲了,再底层就是C++了。API解读完了。

删除元素,就是把即将被删除元素的后边的元素往前挪了END - START个位置。然后按长度取就可以了。

目录
相关文章
|
6月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
111 1
|
20天前
查找数组中最小的元素
【10月更文挑战第30天】查找数组中最小的元素。
31 5
|
21天前
查找数组中最大的元素值
【10月更文挑战第29天】查找数组中最大的元素值。
28 4
|
5月前
|
C++
C++数组中插入元素。
C++数组中插入元素。
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
|
5月前
|
索引
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
|
5月前
|
编译器
数组\插入删除数组元素
数组\插入删除数组元素
24 0
|
6月前
在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置
|
6月前
如何删除数组中的某个元素?
如何删除数组中的某个元素?
77 0
曲线救国 —— 删除数组的指定元素
曲线救国 —— 删除数组的指定元素
37 0
下一篇
无影云桌面