1.集合构架图
2.Collection与Collections的区别
(1)Collection是一个接口,包含了所有的集合,并为它们提供了通用的操作方法;
(2)Collections是一个包装类,包含了很多静态方法,不能被实例化。
3.如何实现数组和List接口之间的转换
(1)数组—>List:使用Arrays.asList(array)进行转换,代码如下......
String[] array = new String("李元芳","射手一位!");
Array.asList(array);
(2)List—>数组:使用List自带的toArray(0方法,代码如下......
List<String> list = new ArraayList<String>();
list.add("马超");
list.add("曜");
list.toArray();
3.迭代器Iterator是什么,有什么特点?
Iterator 提供了遍历任何Collection接口的接口。可以从一个Collection接口中使用迭代器获取迭代实例;迭代器取代了Java框架中的Enumeration,允许调用者在迭代过程中移除元素。
特点:更加安全,可以确保在当前遍历的集合元素被更改的时候就会抛出ConcurrentModificationException 异常。
4.如何确保一个集合不被修改?
可以使用Collections.unmodifiableCollection(Collection c)方法来创建一个只读集合,当出现修改操作时就会抛出Java. lang. UnsupportedOperationException异常,代码如下:
List<String> list = new ArrayList<>();
list.add("百里守约");
Collection<String> clist = Collection.unmodifiableCollection(list);
clist.add("百里玄策");//此时会抛异常
System.out.println(list.size());
5.HashMap 和Hashtable 的区别?
(1) HashMap 没有排序,允许一个 null 键和多个 null 值,而 Hashtable 则不允许;
(2) HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey,因为contains 方法容易让人引起误解;
(3) Hashtable 继承自Dictionary 类,HashMap 是Java1.2 引进的Map 接口的实现;
(4) Hashtable 的方法是Synchronize 的,而HashMap 不是;在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步;Hashtable 和HashMap 采用的hash/rehash 算法大致一样,所以性能不会有很大的差异。
6.Arraylist 与Vector 区别?
(1)同步性:Vector 是线程安全的,而 Arraylist 则是线程不安全的;
(2)数据增长:当需要数据增长时,Vector 默认增长一倍,而 Array 则是增长一半。
7.List、Map、Set 三个接口,存取元素时,各有什么特点?
(1)List 以特定次序来持有元素,可有重复元素;
(2)Set 无法拥有重复元素,内部排序;
(3)Map 保存key-value 值,可以根据key 取值。