• java面试题基础之集合篇


    java面试题基础之集合篇

    1、ArrayList和Vector的区别

      参考:https://www.cnblogs.com/javaisbest/p/11795444.html

    2、HashMap和Hashtable的区别

      二者都是Map的实现类,且底层都是哈希表,他们的区别有以下几点:

      父类不同:

        HashMap的父类是AbstractMap,HashTable的父类是Dictionary

      初始化容量和扩容量不同:

        HashMap初始化容量为16,按2倍扩容;HashTanle初始化容量为11,按2倍+1扩容

      键和值是否可以为null:

        HashMap可以,HashTable不行

      线程安全上:

        HashMap不是线程安全的,HashTable是线程安全的

    3、List和 Map区别?

      List集合是Connection集合的子接口

      存取数据的方式不同:

        List集合是单个存取,且存值是有序可重复的;而Map集合是根据键值对进行存取,键是无序不可重复的,值可以重复

    4、List,Set, Map是否继承自Collection接口?

      在java中的集合有两大接口:Map和Connection,其它所有集合都是他们的实现类

      所以,List集合和Set集合继承了Connection接口的,而Map集合不是

    5、List、Map、Set三个接口,存取元素时,各有什么特点?

      存元素:

        List:单个存取,且元素的值有序可重复

        Map:键值对存取,键是无序不可重复的,值可以重复

        Set:单个存取,元素的值无序不可重复

      取元素:

        List取出元素for循环,foreach循环,Iterator迭代器迭代

        Map取出元素需转换为Set,然后进行Iterator迭代器迭代,或转换为Entry对象进行Iterator迭代器迭代

        Set取出元素foreach循环,Iterator迭代器迭代

    6、说出ArrayList,Vector,LinkedList的存储性能和特性

      ArrayList和Vector底层是数组,用数组方式存储数据,这种方式查询速度快,修改、删除操作慢。

      LinkedList底层是双向链表,将对象存放在独立的空间中,这种方式修改数据快,查询数据慢。

      

    7、去掉一个Vector集合中重复的元素

      运用Set集合的不可重复性

      

      

     

    8、Collection和Collections的区别。

      Collection是集合类的一个接口,其中包含了对集合类功能的实现和一些基本操作,有子接口List和Set

      Collections是一个类,是针对集合操作的工具类,其中包含对集合进行排序和二分查找的方法

    9、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

      从定义上来看:

        equals是一个方法,==是一个关系运算符

      当比较对象为基本数据类型时:

        只能用==

      当比较对象为引用数据类型时

        ==:比较的是两个引用是不是指向同一个内存地址

         equals:比较的是两个引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.

      

      由于Set集合中存放的是对象的引用,而需要比较的是引用的值是否相同,所以说用equals
    10、你所知道的集合类都有哪些?主要方法?

      java中的集合类有两大接口:Connection集合、Map集合

      Connection集合的两大实现类:List集合、Set集合

      List集合的实现类:ArrayList、Vector、LinkedList

      Set集合的实现类:HashSet、TreeSet

      Map集合的实现类:HashMap、HashTable、TreeMap

      

      Connection集合的主要方法:

        add():向集合中添加元素

        isEmpty():集合是否为空

        size():判断集合中元素个数

        contains(元素名称):判断该元素是否存在

        remove(元素名称):删除该元素

        toArray(数组名):将集合转为数组

      Set集合由于实现了Connection接口,参考Connection

      相对于Collection,List增加了索引值的操作(索引值从0开始):

        add(索引值,添加的内容):指定的索引值处添加数据

        indexOf(查找的内容)/lastIndexOf(查找的内容):返回元素第一次/最后一次出现的位置的索引值:

        get(索引值):返回指定位置的元素

      ArrayList、Vector实现了List接口,参考List

      

      但LinkedList由于是双链表,比较特殊:

        模拟栈(先进后出):进栈和出栈:push()、pop()

        模拟队列(先进先出):进队和出队:offer()、poll()

     

     

          

      Map集合常用方法:

        put():添加元素

        replace():替换

        remove(键)/remove(键,值):删除(前者:只要“键”匹配,则会直接删除键值对;后者:需要“键”、“值”都匹配才会删除键值对

        size():判断集合的个数

        get(键):查询;根据“键”查询“值”,如果“键”不存在,则输出null

        containsKey(键)/containsValue(值):查询键/值是否存在

        keySet():返回所有键的集合

        变量.Values():返回所有值得集合

         entrySet():返回所有Entry的集合

  • 相关阅读:
    Surface RT2装Win10出现 "INF不包含数字签名信息"【已解决】
    树上倍增LCA模版
    sql注入
    python 调用 telnet
    ss
    【总结氵】2021.02.27 省选模拟
    2021.03.13省选模拟 抽卡(card)
    树链剖分之重链剖分 模板
    多项式求逆 模板
    NTT快速数论变换 模板
  • 原文地址:https://www.cnblogs.com/javaisbest/p/12595265.html
Copyright © 2020-2023  润新知