java 集合类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 集合类相关的知识,希望对你有一定的参考价值。

1: 为什么HashMap容量是2的幂?什么是负载因子?

  容量:桶的数量。

  负载因子:元素个数/容量。

         是2的幂的原因: 让元素加入到桶后,分布的更均匀。

2:  为什么String, Integer这样的wrapper类适合作为key?

因为是不可变的,final的,而且重新写了hash()和 equals().、不可变是必要的:为了计算hashcode,防止key的值变化。自己定义的类如果能满足这个要求可以作为map的key。

3:HashMap默认容量是16, 默认装填因子是0.75。

4:HashSet  VS   TreeSet?

                    |——SortedSet接口——TreeSet实现类
Set接口—  |——HashSet实现类
                                         |——LinkedHashSet实现类

HashSet:  不保证排列顺序/不是同步的/最多能放一个null

当向hashset存入一个元素,HashSet会调用hashCode(),来决定存放位置。

在HashSet中比较两个对象是否相等的方法是:先比较两个对象的hashCode()值是否相等,如果不相等就认为两个对象是不相等的,如果两个对象的hashCode相等就继续调用equals()方法进一步判断两个对象是否相等,如果equals()方法返回true认为两个对象相等,返回false认为两个对象不相等。

TreeSet是一个有序集合,元素中安升序排序,缺省是按照自然顺序进行排序,意味着TreeSet中元素要实现Comparable接口;我们可以构造TreeSet对象时,传递实现了Comparator接口的比较器对象.

HashSet是基于Hash算法实现的,其性能通常优于TreeSet,我们通常都应该使用HashSet.

在我们需要确定是否相等的时候用到HashMap;            排序的功能时,我门才使用TreeSet;



以上是关于java 集合类的主要内容,如果未能解决你的问题,请参考以下文章

Java 集合类

java集合类

一文搞定Java集合类,你还在为Java集合类而烦恼吗?

java 集合类

Java 集合类

Java集合类