(面试题)ArrayList,HashSet以及HashMap(2019年10月23日)
1.看如下代码会输出什么
Integer i1 = 120 ; Integer i2 = 120 ; Integer i3 = new Integer(120); Integer i4 = new Integer(120);
答: Integer 在类加载的时候会先在静态区中初始化好-128 127 之间的数值,如果在这个范围则直接重复使用,否则在堆中new一个Integer 120:true 由于10在范围内,所以使用共用静态区中的Integer 1000:false 由于1000在范围外,所以在堆中重新new一个Integer
2.ArrayList可以有重复的元素吗?元素是有序的吗?
有重复的元素,元素是有序的
3.ArrayList和Vector有什么区别
ArrayList是线程不安全的,效率高
Vector是线程安全的,效率低
4.有23个对象加入到HashSet中,初始化最小为多少
23/0.75=30.66...<32=2^5
所以初始化32个最好,又不会扩容。也不会浪费空间
5.写一个迭代器
// 迭代器遍历 Iterator<String> iterator = set.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); }