删除数组中一个或者多个连续的元素
来源:互联网 发布:电脑淘宝扫一扫在哪 编辑:程序博客网 时间:2024/06/05 14:50
本文允许转载,但请标明出处: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的元素,替换长度为1printArray(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个位置。然后按长度取就可以了。
1 2
- 删除数组中一个或者多个连续的元素
- 在一个数组中查找最大的K个元素或者最小的K个元素
- 一个循环删除数组里的多个元素
- 在一个无序数组中找到第K个最小或者最大的元素
- 删除一个数组中重复的元素
- 删除一个数组中重复的元素
- 获取一个数组中最长的连续的元素序列
- List 快速删除连续的多个元素
- JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串!
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有
- 使用正则表达式将一个字符串中连续的多个(两个或者两个以上)替换为一个空格
- 删除数组中特定的元素或者某一范围的元素
- vim 将文本中连续的多个空行删除为只留一下一个空行
- C 删除一个数组中重复的元素
- 关于删除数组中相同元素的一个小技巧
- 算法<删除一个数组中为0的元素>
- PHP 删除数组第一个元素和最后一个元素
- PHP 删除数组第一个元素和最后一个元素
- 办事
- Cling项目中最新2.0版本的使用
- 取近似值
- 在win32程序中如何输出信息:格式化float int double
- 熵的社会学意义
- 删除数组中一个或者多个连续的元素
- python for data analysis 操作usagov_bitly_data示例
- Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or pat
- web开发概述
- sphinx转markdown
- 查看linux安装系统时所使用的readhat还是centos
- scala中的对象私有字段
- 贝叶斯方法及其应用(1)
- 一元多项式乘法字符运算(关联容器map)