正在寻找从object[]java中删除元素的最佳方法
我有一个对象数组,我想根据它的索引从中删除一个特定的元素。我知道两种方法:正在寻找从object[]java中删除元素的最佳方法,java,Java,我有一个对象数组,我想根据它的索引从中删除一个特定的元素。我知道两种方法: 将对象[]转换为列表并使用移除函数 将元素值设置为null,然后创建另一个对象数组并 过滤 还有其他最佳方法吗? 创建大小为n-1的新数组 将0..index-1元素从旧数组复制到新数组 将index+1..n元素从旧数组复制到新数组 使用java.lang.System.arraycopy(Object,int,Object,int,int)进行数组复制操作 这可能是最理想的方法。您应该使用迭代器删除列表中的元素。
- 创建大小为
的新数组n-1
- 将
元素从旧数组复制到新数组0..index-1
- 将
元素从旧数组复制到新数组index+1..n
java.lang.System.arraycopy(Object,int,Object,int,int)
进行数组复制操作
这可能是最理想的方法。您应该使用迭代器删除列表中的元素。 示例代码:
String[] array = {"one", "two", "three"};
List<String> list = new ArrayList<>(Arrays.asList(array));
Iterator<String> it = list.iterator();
int index = 0;
while (it.hasNext())
{
String next = it.next();
if (index == 1)
{
it.remove();
}
index++;
}
String[]数组={“一”、“二”、“三”};
List List=newarraylist(Arrays.asList(array));
Iterator it=list.Iterator();
int指数=0;
while(it.hasNext())
{
String next=it.next();
如果(索引==1)
{
it.remove();
}
索引++;
}
另一种使用流的方法可能类似
Object[] myObject = {"foo", "bar", 42, 13, "doo"};
int indexToRemove = 3;
Object[] result = IntStream.range(0, myObject.length)
.filter(i -> i != indexToRemove)
.mapToObj(i -> myObject[i])
.toArray();
您应该解释更多的上下文:数据结构必须是一个数组吗,从数组中删除一个项的次数是多少,访问它的次数是多少。您是否通过索引、二进制搜索等方式访问元素。。等等。使用ArrayList。