Java Vector 在删除时不重新排序索引,但将它们保留为空,在添加命令上重用这些空格

标签 java arrays list vector indices

我想避免使用普通数组,因为我想要至少具有以下命令的东西

//grows in size if no null's are found.
key = indexOf(value);<br>
remove(key);<br>
add(value);<br>
contains(value);<br>
length(); //size();

除了保持索引顺序完整的部分之外,Vector 拥有所有这些。

也许我想要的东西已经存在于Java SDK中?谁能告诉我它叫什么名字。

代码:

import java.util.Vector;

public class VectorDemo {

   public static void main(String[] args) {
      // create an empty Vector vec with an initial capacity of 4      
      Vector<Integer> vec = new Vector<Integer>(4);

      // use add() method to add elements in the vector
      vec.add(0,111);
      vec.add(1,9999);
      vec.add(2,191919);
      vec.add(3,-12394);

     System.out.println(vec);
     vec.remove(2);
     System.out.println(vec);

   }  
}

输出:

Executing the program....
$java -Xmx128M -Xms16M VectorDemo 
[111, 9999, 191919, -12394]
[111, 9999, -12394]

虽然我想要这个输出..

输出:

[111, 9999, 191919, -12394]
[111, 9999, null,   -12394]

最佳答案

您可以简单地使用

vec.set(2, null);

要在添加时重用 null 元素,您可以这样做

   int i = vec.indexOf(null)
   if (i == -1) {
        vec.add(obj);
   } else {
        vec.set(i, obj);
   }

关于Java Vector 在删除时不重新排序索引,但将它们保留为空,在添加命令上重用这些空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642660/

相关文章:

java - Spring可运行jar在窗口上运行

java - JOptionPane 的 While 循环返回 StringIndexOutOfBounds 异常

javascript - 素数,需要一点帮助

javascript - 数组中的 AngularJS 对象到新对象

python - 测试 numpy 数组是否是 numpy 数组列表的成员,并将其从列表中删除

java - Mybatis传递多个值进行查询

java - 如何在 JSF2/EL 2.2 中使用可选参数列表调用方法

javascript - 从对象内的 JSON 解析对象获取值;动态键 (JavaScript)

java - Kotlin 中 for 循环的 IndexOutOfBoundsException

java - 为什么不能将返回 List 的方法的返回值分配给 ArrayList 变量?