Java 我想删除数组列表中的空元素,这将减小数组的大小
这是我删除空元素数的方法:Java 我想删除数组列表中的空元素,这将减小数组的大小,java,oop,junit5,Java,Oop,Junit5,这是我删除空元素数的方法: @Override public void removeAt(int index) { int count = 0; for(int i = index; i < this.array.length -1; i++){ array[i] = array[i + 1]; if(Arrays.toString(array).contains("null")) { count
@Override
public void removeAt(int index) {
int count = 0;
for(int i = index; i < this.array.length -1; i++){
array[i] = array[i + 1];
if(Arrays.toString(array).contains("null")) {
count = count + 1;
System.out.println("the number of null it has is " + count);
}
}
System.out.println(Arrays.toString(array));
}
您没有收缩内部
数组
变量,因此其大小不会改变。
实际上,您甚至没有从列表中删除元素,只是将所有元素移到null元素的右侧,我认为这不是预期的情况。我在代码中没有看到任何语句可以从数组中删除
null
元素。一个简单的解决方案是将给定数组转换为ArrayList
,然后使用迭代器来迭代ArrayList
并删除null
元素。删除null
元素后,将ArrayList
转换回数组
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Original array
String[] array = { "a", "b", null, "c", null, null, "d" };
int originalSize = array.length;
// Delete null elements
List<String> list = new ArrayList<>(Arrays.asList(array));
Iterator<String> itr = list.iterator();
while (itr.hasNext()) {
if (itr.next() == null) {
itr.remove();
}
}
// Convert list to array and assign it to original array reference
array = list.toArray(new String[0]);
System.out.println(Arrays.toString(array));
System.out.println("Number of null elements deleted: " + (originalSize - array.length));
}
}
Tahsin Ahmed-如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。公认的答案有助于未来的访问者自信地使用解决方案。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Original array
String[] array = { "a", "b", null, "c", null, null, "d" };
int originalSize = array.length;
// Delete null elements
List<String> list = new ArrayList<>(Arrays.asList(array));
Iterator<String> itr = list.iterator();
while (itr.hasNext()) {
if (itr.next() == null) {
itr.remove();
}
}
// Convert list to array and assign it to original array reference
array = list.toArray(new String[0]);
System.out.println(Arrays.toString(array));
System.out.println("Number of null elements deleted: " + (originalSize - array.length));
}
}
[a, b, c, d]
Number of null elements deleted: 3