Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
A:Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。
Q:大致讲解java集合的体系结构
A:List、Set、Map是这个集合体系中最主要的三个接口。
其中List和Set继承自Collection接口。
Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。
Comparable和Comparator区别
A:调用java.util.Collections.sort(List list)方法来进行排序的时候,List内的Object都必须实现了Comparable接口。
java.util.Collections.sort(List list,Comparator c),可以临时声明一个Comparator 来实现排序。
Collections.sort(imageList, new Comparator() {
public int compare(Object a, Object b) {
int orderA = Integer.parseInt( ( (Image) a).getSequence());
int orderB = Integer.parseInt( ( (Image) b).getSequence());
return orderA - orderB;
}
});
如果需要改变排列顺序,改成return orderb - orderA 即可。
集合接口:
6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
抽象类:
5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
实现类:
8个实现类(实线表示),对接口的具体实现。
· Collection 接口是一组允许重复的对象。
· Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。
· List 接口继承 Collection,允许重复,
以元素安插的次序来放置元素
,不会重新排列。
· Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。
· 容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。
(1) 单元素添加、删除操作:
//将对象添加给集合
boolean add(Object o)
//如果集合中有与o相匹配的对象,则删除对象o
boolean remove(Object o):
(2) 查询操作:
//返回当前集合中元素的数量
int size()
//判断集合中是否有任何元素
boolean isEmpty()
//查找集合中是否含有对象o
boolean contains(Object o)
//返回一个迭代器,用来访问集合中的各个元素
Iterator iterator()
(3) 组操作 :作用于元素组或整个集合
//查找集合中是否含有集合c 中所有元素
boolean containsAll(Collection c)
//将集合c 中所有元素添加给该集合
boolean addAll(Collection c)
//删除集合中所有元素
void clear()
//从集合中删除集合c 中的所有元素
void removeAll(Collection c)
//从集合中删除集合c 中不包含的元素
void retainAll(Collection c)
(4) Collection转换为Object数组 :
//返回一个内含集合所有元素的array
Object[] toArray()
//返回一个内含集合所有元素的array。
//运行期返回的array和参数a的型别相同,需要转换为正确型别。
Object[] toArray(Object[] a)