Java编程基础——数组删除元素操作汇总
2018-04-01 17:03
225 查看
[b]有关java中数组操作总结——如何删除指定位置的元素[/b]
package s01_javabasic.summary; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @描述 移除数组指定位置元素的方法{删除数组中的一个元素并且向前移} * @创建人 Cheri_du * @创建时间 2018年3月31日下午10:48:43 * @修改人 * @修改时间 2018年3月31日下午10:48:43 * @since JDK 1.8 */ public class RemoveArrayEle { public static void main(String[] args) { int[] arr = { 1, 5, 7, 9, 12 }; int index = 2; // 将位置索引为2的元素移除 int[] arr2 = removeElement5(arr, index); // 遍历移除以后的数组 for (int i = 0; i < arr2.length; i++) { System.out.println(arr2[i]); } // 第三方工具 // 16.删除数组中某个位置上的数据 // arr = ArrayUtils.remove(arr, 2); // System.out.println(ArrayUtils.toString(arr));// {1,5,9,12} List list = Arrays.asList(arr); ArrayList<Integer> lis = new ArrayList<Integer>(list); // lis.remove(2); // list.remove(2);// java.lang.UnsupportedOperationException // 改进 } // 位移法 private static int[] removeElement(int[] arr, int index) { // 1.index前面的元素不变,后面的元素下标迁移1位,把指定元素移到最后 for (int i = 0; i < arr.length - 1; i++) { // 将从指定位置的元素赋值为后一个元素,最后会把指定位置元素冲掉,最后的元素会和倒数第二的元素相同 /* * 初始化: 1 5 7 9 12 * i=0,1 1 5 7 9 12 * i=2 1 5 9 9 12 * i=3 1 5 9 12 12 */ if (i >= index) { arr[i] = arr[i + 1]; } } // 2.数组大小缩小1个长度 ----1 5 9 12 arr = Arrays.copyOf(arr, arr.length - 1); return arr; } // 截取法 private static int[] removeElement2(int[] arr, int index) { // 1.将数组以指定元素为分管点截取成两个数组,再拼接即可 int[] arr1 = new int[index]; int[] arr2 = new int[arr.length - 1 - index]; for (int i = 0; i < arr.length; i++) { if (i < index) { arr1[i] = arr[i]; } else if (i > index) { arr2[i - index - 1] = arr[i]; } } for (int i = 0; i < arr1.length; i++) { arr[i] = arr1[i]; } for (int i = 0; i < arr2.length; i++) { arr[index + i] = arr2[i]; } arr = Arrays.copyOf(arr, arr.length - 1); return arr; } // 中间变量法 private static int[] removeElement3(int[] arr, int index) { /* * 解决这个问题的思路(假设删除一个元素): 创建一个新的数组,长度为原来数组减1; 循环复制,匹配的不复制,不匹配的复制到新数组; */ int[] tempArr = new int[arr.length - 1]; int idx = 0; for (int i : arr) { if (i != (arr[index])) { tempArr[idx++] = i; } } return tempArr; } // 截取法优化1 private static int[] removeElement4(int[] arr, int index) { // 创建一个新的长度比arr小1的数组,以index为分割点分段复制元素到新数组中 int[] ary = new int[arr.length - 1]; System.arraycopy(arr, 0, ary, 0, index); System.arraycopy(arr, index + 1, ary, index, ary.length - index); return ary; } // 截取法优化2 private static int[] removeElement5(int[] arr, int index) { // 创建一个新的长度比arr小1的数组,以index为分割点分段复制元素到新数组中 int[] ary = arr; System.arraycopy(arr, index + 1, ary, index, arr.length - index - 1); // System.out.println(ary[ary.length-2]); ary = Arrays.copyOf(ary, ary.length - 1);// Arrays.copyOf内部还是调用System.arraycopy System.out.print(Arrays.toString(ary)); return ary; } }这些方法可能不是最优的,如果大家有其他的方法,欢迎大家一起交流交流!一起学习
相关文章推荐
- JAVA数组和JAVA集合类的对象操作-Java基础-Java-编程开发
- MongoDB 第三周作业――用java操作MongoDB之删除数组中的元素
- java 数组操作,从数组a中删除数组b中存在的元素
- java中删除数据库中重复数据的几个方法-Java基础-Java-编程开发
- 第2章 Java编程基础——FAQ2.27 数组的排序算法有哪些?如何实现?
- Java中删除数组中重复元素
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- 操纵java数组-Java基础-Java-编程开发
- 黑马程序员之C#编程基础学习笔记:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素减1。
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组的元素的顺序进行反转。
- Java 删除数组中重复的元素
- java文件操作大全-Java基础-Java-编程开发
- 一个计算机专业学生几年的编程经验汇总 (该系列一共 11 篇,看完之后,java 基础绝对有不小的提升!)
- Java操作数据库编程基础
- java 删除数组中重复元素
- 黑马程序员之C#编程基础学习笔记:计算一个整数数组的所有元素的和。
- 第2章 Java编程基础——FAQ2.26 如何实现数组的复制?
- Java中使用JCOM操作Office对象-Java基础-Java-编程开发
- 第2章 Java编程基础——FAQ2.24 数组如何定义和初始化?
- java 操作mongodb插入、读取、修改以及删除基础