zoukankan      html  css  js  c++  java
  • 面试经常问到的集合问题

    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堆栈,先进后出的数组。

    3.ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?

      Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。

    4.什么时候使用Hashtable,什么时候使用HashMap  

         a.HashMap不是线程安全的;HashTable是线程安全的,其线程安全是通过Sychronize实现。

         b.由于上述原因,HashMap效率高于HashTable。

         c.HashMap的键可以为null,HashTable不可以。

         d.多线程环境下,通常也不是用HashTable,因为效率低。HashMap配合Collections工具类使用实现线程安全。同时还有ConcurrentHashMap可以选择,该类的线程安全是通过Lock的方式实现的,所以效率高于Hashtable。

     同时如果有多个线程访问HashMap,Collections.synchronizedMap()可以代替,总的来说HashMap更灵活。

    5.什么是Iterator

      一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用 Iterators时,在获得Iterator的时候包含一个集合。通常在遍历一个Iterator的时候不建议修改集合。

    6.Iterator与ListIterator有什么区别?

      Iterator:只能正向遍历集合,适用于获取移除元素。

          ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。

  • 相关阅读:
    shiro之cache问题
    SpringMVC关于请求参数乱码问题
    js递归错误
    说说Javac
    说说CDN
    谈谈HTTP
    谈谈Ajax(二)
    谈谈Ajax(一)
    记一次关于SSM框架的使用错误
    MP实战系列(十四)之分页使用
  • 原文地址:https://www.cnblogs.com/scll/p/8244198.html
Copyright © 2011-2022 走看看