void insertElementAt(Object obj,int index)和void set(int index,object o)之间的区别

时间:2018-03-18 17:14:49

标签: java vector collections

这两种方法是否相互替代,或者它们在向量中添加元素时是否具有任何特定的作用,如性能明智?

2 个答案:

答案 0 :(得分:2)

insertElementAt在给定索引处插入给定元素,并在其后移动所有元素。例如,如果要在索引2中插入元素,则插入前索引为2的元素现在位于索引3中,索引3处的元素现在为4,等等。 另一方面,set只是覆盖给定索引处的元素。

请考虑以下代码段:

Vector<String> vec = new Vector<>(Arrays.asList("a", "b", "c", "d"));
System.out.println(vec);

vec.insertElementAt("e", 2);
System.out.println(vec);

vec.set(2, "f");
System.out.println(vec);

insertElementAt的调用会插入&#34; e&#34; &#34; b&#34;和&#34; c&#34;。对set的调用会覆盖&#34; e&#34;与&#34; f&#34;。即,结果输出为:

[a, b, c, d]
[a, b, e, c, d]
[a, b, f, c, d]

答案 1 :(得分:1)

insertElementAt()会将新元素添加到矢量中,保留前面的元素。 set()将覆盖给定索引处的元素。

Vector<String> vector = new Vector<>();
vector.add("A"); // A
vector.add("B"); // A B
vector.insertElementAt("C", 1); // A C B
vector.set(1, "D"); // A D B