面试中常遇到的Set、Map、LinkedList各自区别
来源:互联网 发布:二阶转置矩阵公式 编辑:程序博客网 时间:2024/04/30 01:09
面试中常有面试官会问这样一些问题,这边我就花点时间记录下,毕竟好记性不如烂笔头
1、HashSet、TreeSet的区别
HashSet是使用散列表进行存储,元素无序,元素允许为null,HashSet实现了Set接口,它不允许集合中有重复的值。
在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。
TreeSet是使用树结构来进行存储,元素按字符串顺序排序存储,元素不允许为null。
2、HashTable、HashMap的区别
区别一:继承的父类不同
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。
区别二:线程安全性不同
Hashtable 中的方法是Synchronize的,而HashMap中的方法在缺省情况下是非Synchronize的。
区别三:是否提供contains方法
HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。
Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同。
其中key和value都是对象,并且不能包含重复key,但可以包含重复的value。
Hashtable中,key和value都不允许出现null值。
HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,可能是 HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
区别五:哈希值的计算方法不同,Hashtable直接使用的是对象的hashCode,而HashMap则是在对象的hashCode的基础上还进行了一些变化。
区别六:内部实现使用的数组初始化和扩容方式不同,内存初始大小不同,HashTable初始大小是11,而HashMap初始大小是16
- 面试中常遇到的Set、Map、LinkedList各自区别
- LIST SET MAP的区别 ARRAYLIST LINKEDLIST vector的区别
- 【最近面试遇到的一些问题】java中list、set和map 的区别
- 技术人员在面试中常遇到的问题
- Java面试中常遇到的设计模式
- 简述list,vector,map,set四中STL的数据结构的区别和各自特点
- List,Map,Set以及常用的ArrayList,LinkedList,HashMap的区别和用法
- [转载] ArrayList Vector LinkedList 区别与用法 以及对 List,Map,Set 的解析
- Java中的Set List Map 的各自特点
- Set,List, Map各自实现类的比较
- java面试中常遇到的算法笔试题
- 记录几个前端笔/面试中常遇到的算法
- ArrayList和LinkedList各自实现和区别
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- 面试-ArrayList、Vector、LinkedList的区别
- List,Map,Set的区别
- List、Map、Set的区别
- MapReduce介绍
- Android系统休眠对程序的影响以及处理
- mysql的监控工具mysqlreport安装和说明
- 哈夫曼树的创建
- 35、36、37
- 面试中常遇到的Set、Map、LinkedList各自区别
- 洛谷2542 [AHOI2005]航线规划 BZOJ1969
- 使用adb shell dumpsys检测Android的Activity任务栈
- 【matlab 可视化】MATLAB 画最短路径网络图
- 限制输入密码为字母+数字类型
- EF之Code First设置主键时不自动增长
- Android Studio 使用教程(十六)之 Manifest merger failed with multiple errors, see logs
- TensorFlow TFRecord数据集的生成与显示
- 关于druid数据连接池抛出的 connection holder is null 异常