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值。