为什么Java Vector被认为是遗留类,已过时或已弃用?
在使用并发时,它的使用是否有效?
如果我不想手动同步对象而只想使用线程安全的集合而不需要制作底层数组的新副本(就像CopyOnWriteArrayList那样),那么它可以使用Vector吗?
怎么样Stack,这是一个子类Vector,我应该怎么用,而不是它?
这个问题真的很明显.我隐约知道数学中的向量,但我并没有真正看到C++向量的链接.
我有一个数组:
[0, 5, 6, 0, 0, 2, 5]
Run Code Online (Sandbox Code Playgroud)
我想从中删除所有零,以便返回(保持相同的顺序):
[5, 6, 2, 5]
Run Code Online (Sandbox Code Playgroud)
有没有比以下更简单的方法删除所有零?
int[] array = {0, 5, 6, 0, 0, 2, 5};
int len = 0;
for (int i=0; i<array.length; i++){
if (array[i] != 0)
len++;
}
int [] newArray = new int[len];
for (int i=0, j=0; i<array.length; i++){
if (array[i] != 0) {
newArray[j] = array[i];
j++;
}
}
Run Code Online (Sandbox Code Playgroud)
我无法在Arrays课程中找到任何方法,Google/SO搜索也没有给我任何好的答案.
Java中vector的含义是线程安全和同步,它是如何使线程安全的.我正在查看实施的内部细节
anArrayList只是动态数组的接口吗?或者它们是同一回事吗?
like:ArrayList对应动态数组,HashMap对应Map?
除了我没有看到任何类似动态数组的Java API ,除非它是ArrayList?
在那种情况下,它们将是同一回事!
大概它们是同一回事?
Java使用Vector实现Stack类,为什么?虽然看起来Arraylist应该是一个更好的选择.Java希望Stack是线程安全的,或者对于一般的Stack(我认为不是这种情况)是必须的线程安全还是有任何其他理论来使用Vector来实现Java中的Stack?
可能重复:
ArrayList和Vector有什么区别?
在我最近的程序中,我一直在使用Vectors.但是我已经读到了Vector有点旧的地方.这是否意味着它将过时或逐步淘汰Java是值得商榷的.所以建议应该使用ArrayLists.我注意到,在向量的情况下,ArrayLists没有方法remove(int index,Object object).我问的原因是假设我添加了一个字符串,比如说"String 1".我试图再次添加相同的字符串.如何删除第一个字符串而不计算数组列表中出现的字符串.
对于我工作的项目中的JPA-Entities,List或Map类型的属性总是初始化为同步实现Vector和Hashtable.
(Unsynchronized ArrayList和HashMap是Java中的标准实现,除非真的需要同步.)
有谁知道为什么需要同步收藏?我们使用EclipseLink.
当我问起这件事时,没有人知道为什么这样做.它似乎总是像这样完成.也许这是旧版EclipseLink所需要的?
我问的原因有两个:
示例实体:
@Entity
public class Person {
...
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable( ... )
private List<Role> accessRoles;
@ElementCollection
@CollectionTable( ... )
@MapKeyColumn(name="KEY")
@Column(name="VALUE")
private Map<String, String> attrs;
public Person() {
// Why Vector/Hashtable instead of ArrayList/HashMap?
accessRoles = new Vector<Role>();
attrs = new Hashtable<String, String>();
}
public List<Role> getAccessRoles() {
return accessRoles;
}
public void setAccessRoles(List<Role> accessRoles) {
this.accessRoles = accessRoles;
}
public Map<String, String> getAttrs() {
return attrs;
}
public void setAttrs(Map<String, String> attrs) …Run Code Online (Sandbox Code Playgroud) java ×7
vector ×5
arraylist ×3
stack ×2
arrays ×1
c++ ×1
deprecated ×1
eclipselink ×1
jpa ×1
obsolete ×1
optimization ×1
stl ×1