2016.10.06
Vector与ArrayList的区别
Vector与ArrayList都是List接口的实现类,它们都代表链表形式的数据结构。
它们两者的使用比较类似,一般通过add()方法来加元素;remove()方法删除元素,size()得到集合元素的数量等。
import java.util.ArrayList;
import java.util.Vector;
public class ListText {
public static void main(String[] args) {
Vector<String> v = new Vector<String>();//创建Vector对象
v.add("hello");//加入元素
v.remove("hello");//删除元素
System.out.println(v.size());//得到vector的元素数量
ArrayList<String> al = new ArrayList<String>();//创建一个ArrayList对象
al.add("hello");//加入元素
al.remove("hello");//删除元素
System.out.println(al.size());//得到链表对象中的元素数量
}
}
输出结果为:
0
0
答案:Vector是线程安全的,因为他操作元素的方法都是同步方法,而ArrayList则不是。开发过程中应该根据需要进行选择,如果要保证线程安全的地方则需要使用Vector,而不必要的时候则无需使用Vector,因为ArrayList效率会高一些。
HashMap和HashTable的区别
对于Map接口来说,它有两种比较重要的实现类HashMap和HashTable,它们保存元素的时候,都是无序的,但是也有一定的区别。
import java.util.HashMap;
import java.util.Map;
public class MapText {
public static void main(String[] args){
Map<String,String> map= new HashMap<String,String>();//创建Map对象
map.put("a", "123");//存放元素
map.put("b", "456");
map.put("c", "789");
for(String key:map.keySet()){//通过key的集合进行遍历
System.out.println(key+":"+map.get(key));//用get方法取得value
}
}
}
HashMap和HashTable的区别主要有以下几个方面。
1.HashTable的方法是同步的,HashMap不能同步。
2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
3.HashTable有一个contains()方法,功能和Contains Value()功能一样。
4.HashTable使用Enumeration,HashMap使用Iterator.
5.hashTable中hash数组的初始化大小及其增长方式不同。
6.哈希值的使用不同,HashTable直接使用对象的hashCode,而HashMap会重新计算hash值。