java基础知识清单(二)

  1. java 容器都有哪些?

java基础知识清单(二)_第1张图片

  1. Collection 和 Collections 有什么区别?
    1. java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
    2. Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

    3. Collections常用API

      1.  boolean addAll(Collection c, T... elements):往集合中添加一些元素

      2.  void shuffle(List list) 打乱顺序:打乱集合顺序。

      3. void sort(List list):将集合中元素按照默认规则排序。

  2. List、Set、Map 之间的区别是什么?

    比较 List Set Map
    继承接口 Collection Collection  
    常见实现类 ArrayList,LinkedList,Vector HashSet,LinkedHashSet,TreeSet HashMap,HashTable
    常见方法 add(),remove(),clear(),get(),contains(),size() add(),remove(),clear(),contains(),size()

    put(),get(),remove(),clear(),

    containsKey(),containsValue()

    keySet(),values(),size()

     

    元素 可重复 不可重复 不可重复
    排序 有序 无序  
    线程安全 Cector线程安全   HashTable线程安全
  3. HashMap 和 Hashtable 有什么区别?
    1. hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
    2. hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。

    3. hashMap允许空键值,而hashTable不允许。

  4. 说一下 HashMap 的实现原理?

    1. ​​​​​​​

      HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 

      HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

      当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。

      需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

  5. 说一下 HashSet 的实现原理?

    1. HashSet底层由HashMap实现

    2. HashSet的值存放于HashMap的key上

    3. HashMap的value统一为PRESENT

 

你可能感兴趣的:(java基础知识清单(二))