List Map Set 比较

1.ArrayList 与 Vector 

        Vector 是线程安全的,也就是说是它的方法之间是线程同步的,而 ArrayList 是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用 ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用 Vector,因为不需要我们自己再去考虑和编写线程安全的代码。

2.HashMap 和 Hashtable 

        HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解。Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。Hashtable 是线程安全的,也就是说是同步的,而 HashMap 是线程序不安全的,不是同步的

3.List,Set, Map

        List是存储单列数据的集合,存储的数据是有顺序,并且允许重复;Map是存储键和值这样的双列数据的集合,存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的;Set和List相似,但存储的数据是没有顺序,并且不允许重复;

        List,Set是继承自Collection接口,而Map 不是。Set 取元素时,不能细说要取第几个,只能以 Iterator 接口取得所有的元素,再逐一遍历各个元素。。List 除了可以用Iterator 接口取得所有的元素,再逐一遍历各个元素之外,还可以调用 get(index i) 来明确说明取第几个。Map取元素可以根据key获得相应的 value,即 get(Object key) 返回值为key 所对应的 value。另外,也可以获得所有的 key 的结合,还可以获得所有的 value 的结合,还可以获得 key 和 value 组合成的Map.Entry 对象的集合。

4.ArrayList,Vector,LinkedList 的存储性能和特性

        ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较ArrayList 差。而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,索引就变慢了,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

LinkedList 也是线程不安全的,LinkedList 提供了一些方法,使得 LinkedList 可以被当作堆栈和队列来使用。

5.去掉一个Vector集合中重复的元素

Vector newVector = new Vector();

for (int i=0;i<vector.size();i++){

    Object obj = vector.get(i);

        if(!newVector.contains(obj);

        newVector.add(obj); 
}
简单的实现方式:
HashSetset = new HashSet(vector);

6.Collection 和 Collections 的区别。

Collection 是集合类的上级接口,继承他的接口主要有 Set 和 List.

Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。



  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值