Java面试总结——容器

1.Java Collections框架和Collection接口

(1)Java Collections框架中包含了 大量集合接口以及这些接口的实现类和操作它们的算法。具体而言,主要提供了List、Queue、Set、Stack和Map等数据结构。Collections类不能实例化,如同一个工具类,其中提供了一系列静态方法,用于对几何中元素进行排序、搜索以及线程安全等各种操作。
①排序(sort)
使用sort方法可以根据元素的自然顺序对指定列表按升序进行排序。

Collections.sort(list);

②混排(shuffle)
打乱顺序随机排序

Collections.shuffle(list);

③反转(reverse)
使用reverse方法可以根据元素的原有顺序反转即可。

Collections.reverse(list);

4.返回Collections中最大、最小元素

Collections.max(list);
Collections.min(list);

(2)Collection(java.util.Collection)是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。它得作用只是提供维护一组对象的基本接口而已。下面分别介绍Set、List、Map3个接口。
①Set
Set的特点是元素无序,而且不可以重复。该接口有两个实现类HashSet和TreeSet。
②List
List的特点是按照对象进入的顺序保存对象,它可以保存重复的对象。List接口的主要实现类是ArrayList和LinkedList。
③Map
提供了一个键映射到值的数据结构。它用于保存键值对,其中值可以重复,但键是唯一的,不能重复。HashMap是基于散列表实现的,TreeMap基于红黑树的数据结构来实现的,内部元素是按需排列的。

2.什么是迭代器

迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器对象中各个元素,而又不必暴露该对象内部细节的方法。
迭代器的使用有以下3个注意事项:
(1)使用容器的iterator()方法返回一个Iterator,然后通过Iterator的**next()方法返回第一个元素。
(2)使用Iterator的
hasNext()方法判断容器是否还有元素,如果有,可以使用next()方法获取下一个元素。
(3)可以通过
remove()**方法删除迭代器返回的元素。
Iterator支持派生的兄弟成员。ListIterator只存在于List中,支持在迭代期间向List中添加或删除元素,并且可以在List中双向滚动

3.ArrayList、LinkedList和Vector有什么区别

这三类均在java.util包中,均为可伸缩数组, ArrayList和Vector都是基于存储元素Object[] array来实现的,他们会在内存中开辟一块连续的空间来存储。他们均支持使用序号(下标)来访问元素。ArrayList和Vector都有一个初始化的容量大小,当里面存储的元素超过初始化大小时,Vector默认扩充为原来的2倍(扩充空间大小可以设置),ArrayList默认扩充为原来的1.5倍(扩充大小不可设置)。
(1)synchronization(同步)的使用,ArrayList的方法都不是同步的,Vector的方法是同步的。
(2)线程安全,Vector是线程安全的,ArrayList是线程不安全的。
LinkedList采用双向列表实现,索引访问效率低,但是插入效率高,是非线程安全的。

4.HashMap&HashTable&TreeMap&WeakHashMap

java为数据结构中的映射定义了一个接口java.util.Map,它包括3个实现类:HashMap、Hashtable和TreeMap。Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容索引的,而在Map中,则是通过对象来进行索引的,用来索引的对象叫做key,其对应的对象叫做value。
(1)HashMap与HashTable的区别

区别键值是否为空线程是否安全迭代类型判断是否包含数组大小hash值的使用
HashTable不允许线程安全Enumertaioncontains默认大小为11,增加方式为old*2+1直接使用对象的hashCode
HashMap允许为空,但是只能一条记录健值为空线程不安全Iterationcontainsvalue、containsKey默认大小为16,必须为2的指数

就效率而言,HashMap可能高于HashTable
HashMap通过
Map m=Collections.synchronizedMap(new HashMap())来达到同步
(2)HashMap和TreeMap有什么区别
HashMap里存入的键值对在取出时没有时间固定的顺序,是随机的。一般而言,在Map中插入、删除和定位元素,HashMap是最好的选择。由于TreeMap实现了sortMap接口,能够把它保存的记录根据键排序,因此,取出来的是排序后的键值对,如果需要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。LinkedHashMap是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列。
(3)HashMap与WeakHashMap的区别
WeakHashMap和HashMap类似,二者的不同之处在于WeakHashMap中的key采用的是“弱引用”的方式,只要WeakHashMap中的key不再被外部引用,它就可以被垃圾回收器回收。而HashMap中key采用的是“强引用的方式‘,当HashMap中的key没有被外部引用时,只有在这个key从HashMap中删除后,才可以被垃圾回收器回收。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值