Arraylist和linkedlist的区别
相当于数组和链表的区别:当arraylist中添加对象时对应的数组长度就要改变,因此便于查找(直接get(i)就ok)而不利于增删改;相反linkedlist相当于链表可以进行增删改,但是查询要从第一个节点开始会浪费时间。
hashmap和hashtable的区别
a.hashmap实现了map接口,而hashtable继承了Dictionary类。b。hashtable是同步的,而hashmap不同步,这就意味着多线程中调用hashmap不能实现同步,但是利用Collection类中的静态方法synochronizedMap()可以创建map对象,这样就可以调用hashmap了,所以对于单线程还是多线程hashmap都可以胜任而对于hashtable用在单线程就有点大材小用了,增加费用。因此大多数存在线程同步的话用hashtable,其他情况下使用hashmap c。hashmap允许k,v为null,关键字key是唯一不重复的但是k为null只有一项而v为null可以有很多项,用containKey()来判断key是否为空。
hashmap和hashset的相同与不同
hashmap一一对应,是有序的集合所以查找起来比较快而hashset是只显示key值hashmap,是一个集合,是无序的,因此查找很慢,且不能重复添加。
hashcode的用法
相当于对象的一个二进制编码,比较两个对象是否相等,这也保证hashmap中的key值是唯一的
与equals的区别:equals重写可以判断内容是否相等返回布尔型,而hashcode返回int型,想要判断2个对象物理相等用==