JAVA 去除数组 null 值
在JAVA编程中,我们经常会遇到处理数组的情况。有时候,我们需要从数组中去除掉所有的null值,以便于后续的操作。本文将介绍几种方法来实现这一功能,并提供相应的代码示例。
方法一:使用循环遍历
最简单的方法就是使用循环遍历数组,然后判断每个元素是否为null。如果是null,则将其移除。
下面是一个示例代码:
public class ArrayUtils {
public static String[] removeNullValues(String[] array) {
int nullCount = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == null) {
nullCount++;
}
}
String[] newArray = new String[array.length - nullCount];
int j = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] != null) {
newArray[j] = array[i];
j++;
}
}
return newArray;
}
}
上述代码中,removeNullValues
方法接受一个字符串数组作为参数,并返回一个去除了null值的新数组。该方法首先计算出数组中null值的个数,然后创建一个新数组,长度为原数组长度减去null值的个数。接下来,利用两个指针,一个用于遍历原数组,另一个用于指向新数组的插入位置。如果原数组的元素不为null,则将其插入到新数组中。
这种方法相对简单,但是需要遍历两次数组,时间复杂度为O(n)。
方法二:使用流进行过滤
JAVA 8及以上版本引入了流的概念,可以方便地对数组进行各种操作,包括过滤。
下面是使用流进行过滤的示例代码:
import java.util.Arrays;
import java.util.stream.Collectors;
public class ArrayUtils {
public static String[] removeNullValues(String[] array) {
return Arrays.stream(array)
.filter(e -> e != null)
.toArray(String[]::new);
}
}
上述代码中,我们使用Arrays.stream
方法将数组转化为流,然后使用filter
方法过滤掉所有为null的元素,最后使用toArray
方法将流转化为数组。
这种方法相比于循环遍历的方法,代码更加简洁,且只需要遍历一次数组,时间复杂度为O(n)。
方法三:使用Apache Commons ArrayUtils库
Apache Commons是一个非常流行的JAVA工具库,提供了很多实用的工具类和方法。其中,ArrayUtils
是其数组操作的一个常用类,提供了各种对数组进行操作的方法,包括去除null值。
下面是使用Apache Commons ArrayUtils库进行去除null值的示例代码:
import org.apache.commons.lang3.ArrayUtils;
public class ArrayUtilsExample {
public static String[] removeNullValues(String[] array) {
return ArrayUtils.removeElement(array, null);
}
}
上述代码中,我们使用ArrayUtils.removeElement
方法去除数组中的null值。该方法接受两个参数,第一个参数为原数组,第二个参数为需要去除的值。这里我们将null作为第二个参数传入,即可去除所有的null值。
使用Apache Commons ArrayUtils库可以更加方便地进行数组操作,不需要编写重复的代码,提高了代码的复用性。
总结
本文介绍了三种去除数组中null值的方法,包括使用循环遍历、使用流进行过滤和使用Apache Commons ArrayUtils库。这些方法各有优劣,可以根据具体的情况选择合适的方法。如果在项目中使用到频繁的数组操作,推荐使用Apache Commons ArrayUtils库,可以提高开发效率,减少代码量。
希望本文对您有所帮助,谢谢阅读!
类图
classDiagram
ArrayUtilsExample --|> ArrayUtils
ArrayUtils --|> org.apache.commons.lang3.ArrayUtils
上述类图展示了本文中提到的ArrayUtilsExample
类和ArrayUtils
类之间的关系