1.hashtable和hashmap区别
实话说拿到这个题目的时候我也就蒙了,基本上也没怎么使用过hashtable。后面通过查找一些比较靠谱的网站得出答案,可供参考。
(1)HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
(2)HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
(3)HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
(4)HashTable使用Enumeration,HashMap使用Iterator。 以上只是表面的不同,它们的实现也有很大的不同。(5)HashTable中hash数组默认大小是11,增加的方式是old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
(6)哈希值的使用不同。
2.对hashmap进行遍历
a.对key和value都遍历
HashMap<String,String> hm = new HashMap<>();
for(Entry entry:hm.entrySet()){
entry.getKey(); entry.getValue();
}
b.对key遍历
HashMap<String,String> hm = new HashMap<>();
for(String key:hm.keySet()){...}
c.对value遍历
HashMap<String,String> hm = new HashMap<>();
for(String value:hm.values()){ ...}
3.实现多线程的三种方式
(1)继承Thread
(2)实现Runnable接口
(3)使用ExecutorService、Callable、Future实现有返回值的多线程结果
4.StringBuffer和StringBuilder区别
StringBuffer线程安全,效率较低
StringBuilder线程不安全,效率较高
5.StringBuffer中insert方法和append方法区别。例如append(x等同于)什么
StringBuffer中insert方法有两个参数,可以任意位置进行添加,而append方法只能添加到尾部。
还有两道考算法逻辑的题目(我也没能答出来,要是有答出来的可以留言给我)
第一题:有十二个硬币,其中有一个是伪币(除了重量不一样以为其他都相同),用天平称三次找出伪币。
第二题:有一名老师,他有三个聪明的学生。有一天,老师将三名学生的额头上贴了三个纸条,纸条上面写上了正整数。三名同学只能看见其他两名同学额头纸条上的数字,却看不见自己额头上的数字。但是,这三个数字中其中有某两个数字的和等于第三个数字。老师问第一个同学,你知道你额头纸条上的数字吗?第一个同学回答不知道。继而,问第二个同学也,你知道你额头纸条上的数字吗?第二个同学回答不知道。最后,老师问第三个同学,第三个同学回答是144。你知道其他两名学生额头上的数字吗?