List、Set、Map的区别
List和Set都是单列元素的集合,他们有共同的父接口Collection;
List中的元素是有序的可以重复;而Set中的元素是无序的,不能重复,内部排序
ArrayList、Vector、LinkedList三者的区别
三者的的父接口都是List,ArrayList和Vector都使用数组方式储存数据,索引快而插入满,ArrayList线程不安全,效率高;而Vetor反之。LinkedList使用双向链表储存数据,索引慢,插入快。如需大量增删操作 数据,使用LinkedList ;如查询比较频繁,使用ArrayList。
Set集合中判断元素是否重复的两个方法:先用hashCode()返回相同的Hash码值,再用equals()方法判断两个对象的内容;故Hash码值相同,元素不一定重复,equal()判断相等元素就一定重复
Set接口有个子接口SortedSet,TreeSet是SortedSet的实现类;将自定义类放在TreeSet中,需要实现Comparable接口(可比较接口),这个接口只定义了一个compareTo(Object o)方法,返回值是整型,如当前对象大于参数对象返回整数,等于返回0,小于返回负数,这是升序排列,反之是降序
另一个比较接口是Comparator接口(比较器接口),定义了compare(Object o1,Object o2)方法来比较两个对象,返回值定义和compareTo()方法一样。
Map是双列元素的集合;
Map以键-值对形式储存元素,键是唯一的,值可以重复;
HashMap和Hashtable的区别:HashMap可以用null作为键和值;Hashtable不能,
HashMap不是同步的,线程不安全,效率高;Hashtable反之,