1.collection框架结构:
集合框架(Collection Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等.
集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等.
集合框架类似编程中经常用到的工具类,使得编码更专注于业务层的实现,不需要从底层实现相关细节—“数据结构的封装”和”典型算法的实现”.(有待于修改)
2.collection框架中实现比较要实现什么借口:
comparable/comparator(需要重点看一下)
3.ArrayList和Vector的区别:
相同点:
1.ArrayList和Vector都实现了List接口,List借口继承Collection接口。
2.他们都是有序集合,即存储在这两个集合中的元素都是有顺序的,相当于一种动态数组,可通过索引号取出某个元素。并且集合中元素可以重复。
不同点:
同步性:Vector是线程安全的,即他的方法之间是线程同步的,ArrayList是线程不安全的,即他的方法之间是线程不同步的。如果是一个线程会访问到集合使用ArrayList,因为它不考虑线程安全,效率高。如果是多个线程会访问到集合,使用Vector因为它不会考虑和编写程序安全代码。
数据增长:Vector增长原来的一倍,ArrayList增长原来的0.5倍。
4.hashMap和hashTable的区别:
1.历史原因:HashTable基于陈旧的dictionary类的,HashMap是java 1.2引进的Map接口的一个实现。
2.同步性:HashTable是线程安全的,也就是说是同步的,而HashMap是线程不安全的,也就是说是不同步的。
3.值:HashMap允许将空值作为一个表的条目的key和value。
5.List和Map的区别:
一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List存储的数据是有顺序的,并且可以重复。May存储的数据是无序的,键不可以重复,值可以重复。
6.List,Set,Map是否继承collection接口:
List,Set继承Collection接口,Map不是。
7.List,Set,Map的区别:
List,Set是单列集合,都继承Collection接口。Set不允许有重复元素,只能用iterator接口取得所有元素,在逐一遍历。List允许重复,且是有序集合,除了使用iterator接口取得所有元素,逐一遍历外,还可以通过索引号来获取指定索引号的集合。
Map是双列集合,可一键多指,无顺序。
8.说出ArrayList,Vector,LinkedList存储的性能和特性:
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便新增和插入元素,他们都允许直接按序号索引元素,但插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了线程安全通常性能比ArrayList差。而linkedList使用双向链表实现存储,按需要索引数据要进行前向或后向遍历,但是插入数据是只需要记录本项的前后向即可,所以插入速度较快。
linkedList也是线程不安全的,linkedList提供了一些方法,使得LinkedList可以被当做堆栈和队列来使用。
9.去掉一个Vector集合中重复的元素:
Vector newVector = new Vector();
For (int i=0;i<vector.size();i++)
{
Object obj = vector.get(i);
if(!newVector.contains(obj);
newVector.add(obj);
}
10.collection和collections的区别:
collection是集合类的上级接口,继承于它的接口有Set和List。
collections是针对集合类的帮助类,它提供了一系列的静态方法实现对各种集合的搜索,排序,线程安全化操作。
11.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?使用==还是用equals()?他们有何区别?
Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。
equals()和==方法决定引用值是否指向同一对象,equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相匹配的时候,返回真值。
12.你所知道的集合类有哪些?主要方法?
最常用的集合类有List和Map。List具体实现包括ArrayList和Vector,他们是可变大小的列表,比较适合构建,存储和操作任意类型对象的元素列表。List适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(键,值),其中每一个键映射到一个值。
对于Set,有add,remove,contains;对于Map,有put,remove,contains;List有get(int index)这样的方法,因为它可以按顺序取元素,而set中没有get(int index)方法;List和set都可以迭代出所有元素,迭代时先要得到一个iterator对象,所以List和Set都有一个iterator方法用于返回Iterator对象;map可以返回三个集合,一个是返回所有Key的集合,一个是返回所有Value的集合,在一个是返回Key和Value组成的EntrySet对象的集合,May也有get方法,参数是Key,返回值是Key对应的Value。
13.两个对象相同(x.equals(y)==true),但却可能有不同的hashCode,这句话对不对?
对,如果对象要保存在HashMap或HashSet中,他们的equals相等,那么他们的hashCode也一定相等。如果不保存在HashSet或HashMap中,于hashcode无关。
14.TreeSet 里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的 compareTo 方法,还是使用的子类的 compareTo 方法,还是抛异常: