正在寻找从object[]java中删除元素的最佳方法

正在寻找从object[]java中删除元素的最佳方法,java,Java,我有一个对象数组,我想根据它的索引从中删除一个特定的元素。我知道两种方法: 将对象[]转换为列表并使用移除函数 将元素值设置为null,然后创建另一个对象数组并 过滤 还有其他最佳方法吗? 创建大小为n-1的新数组 将0..index-1元素从旧数组复制到新数组 将index+1..n元素从旧数组复制到新数组 使用java.lang.System.arraycopy(Object,int,Object,int,int)进行数组复制操作 这可能是最理想的方法。您应该使用迭代器删除列表中的元素。

我有一个对象数组,我想根据它的索引从中删除一个特定的元素。我知道两种方法:

  • 将对象[]转换为列表并使用移除函数
  • 将元素值设置为null,然后创建另一个对象数组并 过滤
  • 还有其他最佳方法吗?

    • 创建大小为
      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。