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的集合

posted @ 2020-03-29 22:00  发育中的程序猿  阅读(673)  评论(0编辑  收藏  举报