关于集合的复习

常见的集合有哪些?

答:分为三种集合  List、Set、Map

List:ArrayList、LinkedList、Vector

Set:HashSet、LinkedHashSet、TreeSet

Map:HashMap、HashTable、LinkedHashMap、TreeMap、Properties

 

Properties是一个特殊的Map,用于加载配置文件。

 

 

HashMap和HashTable的区别?

答:1、HashMap不考虑同步,线程不安全;HashTable使用了synchronized 关键字,可同步,线程安全。

  2、HashMap 键值对允许为空,HashTable键值对不允许为空

  3、HashMap和HashTable的父接口不同

 

什么是哈希冲突?

答:传入两个不同内容的元素,可最后插入集合的时候,它们的哈希值是不同,但经过哈希算法分配的地址也是一样的,就是两个元素在哈希表中的位置一样,

需要在这个位置链出一个位置,放元素。   这个过程叫连地址法。

 

 

如何解决HashMap的哈希冲突?

答:使用链地址法

 

ArrayList 、Vector、LinkedList的区别?

答:1、两者的扩容规则不同,ArrayList的扩容规则是  新容量=旧容量+旧容量/2;Vector的扩容规则是 新容量的=旧容量+扩容因子;

  2、ArrayList线程不安全,Vector线程安全,LinkedList线程不安全。

  3、LinkedList底层数据结构是链表、ArrayList和Vector底层数据结构是数组。

  4、LinkedList实现了List接口外,还实现了栈接口,队列接口。可以使用栈和队列的方法,栈push、pop 等  队列 add和remove等

 

 

如果我想要用自己的Object作为Map的K,该怎么做呢?

答:在Object是重写hashCode和equalsf方法

  1、hashCode是为了哈希算法计算存储的位置

  2、equals是为了保证的元素在哈希表中的唯一性

 

 

如果我想要往TreeSet中存入Object元素,该怎么做呢?

答:要提供比较策略,内部比较器和外部比较器

  内部比较器:Object内部实现Comparable接口并实现compareTo方法。

  外部比较器:一个自定义比较器实现Comparator接口并实现compare方法,在将Object存入TreeSet时,把自定义比较器放入。

        在将Object存入TreeSet时,匿名内部类  new Comparator  并实现compare方法。

 

posted @ 2019-08-07 14:57  luojack  阅读(153)  评论(0编辑  收藏  举报