java容器面试题

18.java 容器都有哪些?

List(有序,可重复),Map()映射,Set()不可重复,queue(队列)

19.Collection 和 Collections 有什么区别?

Collection是一个集合的接口下面有List,Set等子类接口。Collections是接口方法类,具有一些特定的方法进行实现

20.List、Set、Map 之间的区别是什么?

List的实现类为arrayList,linkedlist,vector,set为hashSet,Treeset,Map,采用是键值对的形式。

21.HashMap 和 Hashtable 有什么区别?

hasHmap键值都可以为Null,HashTable则不能,HasHtable线程安全,效率低
HashMap初始长度为16,超过75%的时候扩容,扩容为2N。
hashTable长度为11,扩容为2
n+1

22.如何决定使用 HashMap 还是 TreeMap?

看是否需要排序,如果需要用到排序用TreeMap(按key值升序),
HashMap无序,效率比treeMap高。

23.说一下 HashMap 的实现原理?

底层是数组加链表,当需要进行存储的值,通过HashCode()取得哈希值之后,再除以数组的长度得到的余数,代表在数组的那个位置,如果有得到了相同的值,那么会同一个位置,用链表关联,如果长度达到8,那么将会变成有链表变为二叉树,

24.说一下 HashSet 的实现原理?

25.ArrayList 和 LinkedList 的区别是什么?

前者底层是数组,适合查询多,增删少的,后者是链表,查询少,增删多的。

26.如何实现数组和 List 之间的转换?

数组和List的转换,可以通过下面的方式进行转换
Array通过Arrays中的asList()方法转化,List通过调用toArray()方法完成转换,如下图
//

 public static void main(String[] args) {
	Integer[] ss=new Integer[]{1,2,3};
	List intlist = Arrays.asList(ss);
	for (int is : intlist) {
		System.out.println("List的值"+is);
	}
	
	Integer[] intArray=(Integer[]) intlist.toArray();
	
	for (int i = 0; i < intArray.length; i++) {
		System.out.println("数组的值"+intArray[i]);
	}
}

//

List的值1
List的值2
List的值3
数组的值1
数组的值2
数组的值3

27.ArrayList 和 Vector 的区别是什么?

后者为了线程安全,降低了效率,前者线程不安全,效率高,后者线程安全,效率低,一般都用ArrayList,

28.Array 和 ArrayList 有何区别?

ArrayList是Array的复杂版本。
能存储的东西也不一样,array只能存储相同的对象,arrayList可以存储更为复杂的对象,
长度可变,数组的长度被固定,ArrayList数组可变,
取值的不同,Array按照[]中的数字取值,ArrAyList取存值,get(),add().

29.在 Queue 中 poll()和 remove()有什么区别?

poll()空值返回Null,remove()报错。

30.哪些集合类是线程安全的?

vector,hashtable.
ConcurrentHashMap:是一种高效但是线程安全的集合。
Stack:栈,也是线程安全的,继承于Vector

31.迭代器 Iterator 是什么?

一个遍历集合的类,他有许多遍历集合的方法。

32.Iterator 怎么使用?有什么特点?

//

      Iterator iter=intlist.iterator();
	  while (iter.hasNext()) {
      Integer sint=iter.next();
      System.out.println(sint);

33.Iterator 和 ListIterator 有什么区别?

前者单向遍历,后者双向,但后者只能遍历List。

34.怎么确保一个集合不能被修改?

可以调用Collections中的unmodifiableMap方法,把集合传进去,返回将是不可修改的集合 。

你可能感兴趣的:(面试题)