Java常用集合类详解 (2)

当元素的顺序很重要时选用TreeMap,当元素不必以特定的顺序进行存储时,使用HashMap。Hashtable的使用不被推荐,因为HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。

    Properties 一般是把属性文件读入流中后,以键-值对的形式进行保存,以方便读取其中的数据。 


4)、Iterator接口 
    Iterator接口位于java.util包中,它是一个对集合进行迭代的迭代器。 

    集合容器(如:List、Set、Map等)本身提供了处理元素置入和取出的方式,但是单一选取元素的方法很受限制。所以我们要用Iterator去选取容器中的元素,它将容器转换成一个序列。 

Iterator iter=Object.iterator();        

while(iter.hasNext()){   } 


以下是笔者总结的一些面试中经常会问的相关问题:
1.Collection、Set和List的区别? 
    Collection对象之间没有指定的顺序,允许有重复元素和多个null元素对象;它是Set和List接口的父类,是一种最通用型的集合接口; 
    Set各个元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个null元素对象; 

    List各个元素对象之间有指定的顺序,允许重复元素和多个null元素对象; 

2.LinkedList,ArrayList,Vector,Stack,Queue区别?NodeList区别?

1)LinkedList链式访问,以指针相连,适合于在链表中间需要频繁进行插入和删除操作。

2)ArrayList类似数组的形式,按照序号存储,随机访问速度非常快。

3)Vector向量按照各元素序号存储,数组大小可以动态增长,对于大容量数据存储效率较高。

4)Stack堆栈,先进后出的数组。

这些类的对比与选择:

如果涉及到堆栈队列等操作,应该考虑List中的stack,queue

对于需要快速插入删除元素,应该使用linkedlist

如果需要快速随机访问元素,应该选用arraylist

如果程序在单线程环境中,选用非同步类

如果在多线程中,选用同步类vector、stack和hashtable以及其子类。

接下来看看什么是NodeList,NodeList跟arguments都不是普通的数组,他们有数组的一些基本属性但是又不完全是数组。由字面意思来看                 NodeList是DOM操作(getElementsByTagName等)取出来的集合,是集合而不是普通的数组,但是他们有数组的一些属性,例如length、下标索     引,但是他们也有自己的属性,例如item,另外NodeList最大的特点就是时效性(live)。关于NodeList网上相关的资源不是很多,如果有读者对这       块内容比较熟悉,欢迎评论或发我邮箱1029666181@qq.com。

3.HashMap,HashTable,TreeMap,WeakHashMap的区别?ConcurrentHashMap区别?

    关于HashMap,HashTable,TreeMap,上面已经说的非常详细了;

  WeakHashMap是一种改进的hashmap,他对key进行弱引用,如果一个key不再被外部引用,则被gc回收;                         有兴趣深入理解WeakHashMap的朋友可以查看这个帖ttp://mikewang.blog.51cto.com/3826268/880775;

      ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。允许多个修改操作并发进行,其关键在于使用了锁分离技术。          有兴趣升入理解ConcurrentHashMap的朋友可以查看这个贴。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypfss.html