欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一些常见的Java和Android面试题

程序员文章站 2022-06-09 20:04:06
...

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