comparable/comparator
2、ArrayList和Vector的区别
这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素ArrayList与Vector的区别,这主要包括两个方面
同步性:Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。
数据增长:ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,Vector增长原来的一倍,可以设置增长空间的大小。ArrayList增加原来的0.5倍,没有提供增长空间大小的方法。
3、HashMap(数组+链表+红黑树)和Hashtable的区别,线程安全的hashmap
历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的,效率高。在一个线程访问集合的情况下使用HashMap,在多个线程访问同一个集合是使用Hashtable。
值:HashMap的key 和value可以是null,Hashtable不行
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解
线程安全的hashmap:
方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的.
方法二:java.util.concurrent.ConcurrentHashMap
4、没有有顺序的 Map 实现类, 如果有他们是怎么保证有序的。
TreeMap和LinkedHashMap是有序的(TreeMap默认升序,LinkedHashMap则记录了插入顺序)
5、List和 Map区别?
一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。
6、List, Set, Map是否继承自Collection接口?
List,Set是,Map不是
7、说出ArrayList,Vector,LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差
而LinkedList使用双向链表实现存储,所以查找数据慢插入数据快。LinkedList也是线程不安全的
8、去掉一个Vector集合中重复的元素
HashSet set = new HashSet(vector);
9、Collection和 Collections的区别
Collection是集合类的上级接口,继承与他的接口主要有Set和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
10、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。
11、两个对象值相同(x.equals(y) ==true),但却可有不同的hash code,这句话对不对?
对。如果对象要保存在HashSet或HashMap中,它们的equals相等,那么,它们的hashcode值就必须相等。
如果不是要保存在HashSet或HashMap,则与hashcode没有什么关系了,这时候hashcode不等是可以的,例如arrayList存储的对象就不用实现hashcode,当然,我们没有理由不实现,通常都会去实现的。
12、java两个list中保存bean对象,找出其中某一属性不同的元素