一些常见的Java和Android面试题

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

猜你喜欢

转载自3056434592.iteye.com/blog/2328718