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 集合类的主要内容,如果未能解决你的问题,请参考以下文章