提问人:Amalshanth 提问时间:7/23/2023 最后编辑:Amalshanth 更新时间:7/24/2023 访问量:104
使用 ArrayList(java) [duplicate] 从数组中删除元素
removing an element from an array using ArrayList(java) [duplicate]
问:
我正在尝试使用 ArrayList 从数组中删除一个元素。但是我似乎无法让它工作。我是 java 新手。 这是我所做的代码
package workspace;
import java.util.*;
import java.util.stream.*;
public class Worksapce{
private static Collection<Integer> returnarrayList;
static int[] arrayRemover(int[] myArray,int index) {
List<Integer>arrayList = IntStream.of(myArray) .boxed().collect(Collectors.toList());
arrayList.remove(2);
returnarrayList = null;
return returnarrayList.stream().mapToInt(Integer::intValue).toArray();
}
public static void main(String[] args) {
int myArray[]= {1,2,3,4};
int index=2;
myArray=arrayRemover(myArray,index);
System.out.println(Arrays.toString(myArray));
}
}
这是显示的错误
我想从数组中删除一个元素。我知道 java 中没有直接的方法可以从数组中删除元素。但是存在几种间接方法。在那里,我尝试使用arraylist删除元素。我没有得到结果。其中有什么错误?我需要改变什么?
答:
3赞
Elliott Frisch
7/23/2023
#1
您有该行,然后尝试在下一行调用方法。我只会创建一个新的数组(因为您正在删除一个元素);然后复制 from to 和 from to 新数组。喜欢returnarrayList = null;
null
myArray.length - 1
0
index
index + 1
static int[] arrayRemover(int[] myArray, int index) {
if (myArray == null || myArray.length < 2) {
return myArray;
}
int[] r = new int[myArray.length - 1];
System.arraycopy(myArray, 0, r, 0, index);
System.arraycopy(myArray, index + 1, r, index, myArray.length - index - 1);
return r;
}
0赞
Todd
7/23/2023
#2
如果您使用的是 java 8 或更高版本,我已经成为此类流的忠实粉丝。它折叠了许多样板代码,通常只有一行。这是我整理的一个工作单元测试,演示了如何使用流来执行此操作。
import java.io.IOException;
import java.util.Arrays;
import java.util.stream.IntStream;
这些是测试方法中代码的导入。如果您实际上要重新创建测试本身,请将方法放在一个类中,并包含您喜欢的单元测试框架(在我的情况下)。import org.junit.jupiter.api.Test;
@Test
public void testRemoveArrayElement() throws IOException {
int[] myArray = new int[] { 10, 20, 30, 40, 50, 60 };
int indexToRemove = 3;
System.out.println(Arrays.toString(myArray)); // Prints: [10, 20, 30, 40, 50, 60]
int[] myFilteredArray = IntStream.range(0, myArray.length).filter(i -> i != indexToRemove).map(i -> myArray[i]).toArray();
System.out.println(Arrays.toString(myFilteredArray)); // Prints: [10, 20, 30, 50, 60]
}
评论
0赞
Amalshanth
7/23/2023
无法访问显示包组织
0赞
Todd
7/24/2023
奇怪。也许您正在重新创建整个单元测试?如果是这样,我已经更新了我的答案,包括一些导入和关于测试本身的一句话。真正回答这个问题的 Java 流代码行是 100% 标准 Java(Java 8 或更高版本)。
评论