本文共 1500 字,大约阅读时间需要 5 分钟。
删除某些要求的数组元素,并将数组所有元素前移
判断数组元素是否为空,应该避免String类型为null,造成空指针的问题,可加入一个判断来避免String[index]为空的情况,也可用下面的"a".equals(strings[index])来避免空指针问题,且更加简便。package com.javasm.array;import java.util.Arrays;/** * @author: JAVASM * @classNAME: ArrayDemo06 * @description: * @date: 2021/3/29 20:54 * @version:0.1 * @since:1.8 */public class ArrayDemo06 { public static void main(String[] args) { //删除数组元素 String[] strings = { "a", "b", "c", "a", "c", "a", "hello"};//正确结果为"b", "c", "a", "c", "a", "hello" null //[null,b,c,a] //删除数组里面所有的a元素 换成null //数组元素必须是连贯的 后面元素移动位置 //第一层for循环用于遍历数组 for (int index = 0, len = strings.length; index < len; index++) { if ("a".equals(strings[index])) { //如果当前的元素为要删除的元素,则后面元素依次移位 //第二层for循环用于当有要删除的元素时,将后面的的元素全部向前移动 for (int i = index; i < len - 1; i++) { strings[i] = strings[i + 1]; } //数组元素前移,前面的元素都被覆盖了,但是最后一个数组元素仅是移动了,移后数组元素的值依旧存在,因此需要置空 strings[len - 1] = null; //当一个元素被删除后,后面的元素往前补充,则依旧需要从当前元素开始比较,但是循环外有index++, // 所以需要先index--,才能保证不错过检验前移的元素是否是需要删除的元素 if ("a".equals(strings[index])) { index--; } } } System.out.println(Arrays.toString(strings)); //[null, b, null, hello, c, null, null] }}程序输出结果如下:[b, c, c, hello, null, null, null]Process finished with exit code 0
转载地址:http://cknwi.baihongyu.com/