java集合类查漏补缺

1. Vector、ArrayList和LinkedList三者的区别。

   a.ArrayList是最常用的List实现类,其内部是由一个数组实现的,可以实现快速的随机访问。ArrayList类实例不适合复制、移动较多操作。ArrayList不适合插入和删除,适合随机查找和遍历。

   b.Vector和ArrayList的实现基本相同,也是由数组实现的。但是,Vector类的方法都是同步的,同一时刻只能有一个线程对Vector实例进行写操作。因此,Vector的访问比ArrayList慢,但是是线程安全的。

   c.LinkedList相较于ArrayList来说,使用较少,其内部是使用链表结构存储数据的,很适合数据的动态插入和删除操作,不适合随机查找和遍历。此外,LinkedList还定义了一些List接口未规定的方法,以实现对表头和表尾的操作,因而LinkedList可以被用来堆栈、队列和双向队列使用。

 2. Stack。

   1.Stack是一个LIFO的堆栈数据结构,是在Vector类的基础上扩展了push,pop,search,empty和peek五个方法而来的。

   2.Stack和Vector类一样,也是线程安全类。

3. HashTable和HashMap

    a. HashTable继承自Dictionary抽象类,实现了Map接口,因而也属于集合框架的一部分。

    b.在功能上,HashTable几乎可以和HashMap等价。例外,HashTable的key和value都不可以是null,而HashMap的key和value都可以是null。对比HashTable和HashMap的put方法源代码可以发现,HashTable在求key的hash值得时候,并未作特殊处理,null在调用hashCode()方法的时候,会抛出异常,而在put()方法中,HashTable对value进行了检查,当value为null的时候,HashTable会主动抛出异常。HashMap则对key求hash做了特殊的处理,而对value是未做检查的。

    c.从性能上讲,HashTable的方法都进行了同步,是线程安全的,HashMap则未做同步,非线程安全。由于同步方法的缘故,HashTable在存取上速度是比HashMap慢的。

     d.java 5 中新增的ConcurrentHashMap是对HashTable的替代。暂未研究

      e.Map m = Collections.synchronizeMap(hashMap);这样一来m就是一个线程同步的map了。

4.BitSet类。

5.Enumeration接口。

       a.Enumberation类定制了两个方法,hasMoreElements()和nextElement()方法。

6.Java集合框架的基本接口。Collection接口和Iterator接口。

    a.Collection接口规定的方法列表:

              1.Iterator iterator()方法。2.int size()方法。 3.boolean  isEmpty() 方法。4.boolean contains()方法。5.boolean containsAll()方法。

              6.boolean add()方法。 7.boolean addAll()方法。8.boolean remove()方法。9.boolean removeAll()方法。10.boolean retainAll()方法。11. viod clear()方法。 12. Object[] toArray()方法。

      b.Iterator接口方法列表。

               1.next()方法。2.hasNext()方法。3.remove()方法。

7.for each循环可以与任何实现了Iterable接口的对象一起工作。

      Iterable接口的方法只有一个:Iterator iterator()方法。

8. 其他的一些接口。

     1.Queue接口扩展自Collection接口,在Collection接口的基础上,增加了如下方法:

        a. add()方法。b.offer()方法。c. remove()方法。d.poll()方法。e.element()方法和f.peek()方法。

     2.Deque接口。

9.Set实现类

     a.HashSet。内部使用HashMap实现。

     b.LinkedHashMap。内部使用LinkedHashMap实现。

     c.TreeSet。内部使用TreeMap实现。

10.远古容器类,Vector、Stack、HashTable和Properties。

11.Arrays.asList()方法。将一个数组包装成一个List类型的对象,但不是ArrayList对象,它是一个视图对象,带有get和set方法,但是不带有改变数组的的方法,如add和remove,调用该类方法会抛出异常。

12.子范围。subSet()方法,subLis()方法,subMap方法。

13.集合与数组之间的转换。数组转集合较为好转,集合转数组较为麻烦。

14.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值