关于Java集合框架那些问题

什么是Java集合API

Java集合框架API是用来表示和操作集合的统一框架,它包含接口、实现类、以及帮助程序员完成一些编程的算法。简言之,API在上层完成以下几件事:

 

编程更加省力,提高程序速度和代码质量

非关联的API提高互操作性

节省学习使用新API成本

节省设计新API的时间

鼓励、促进软件重用

 

具体来说,有6个集合接口,最基本的是Collection接口,由三个接口SetListSortedSet继承,另外两个接口是MapSortedMap,这两个接口不继承Collection,表示映射而不是真正的集合。

 

什么是Iterator

一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用Iterators时,在获得Iterator的时候包含一个集合快照。通常在遍历一个Iterator的时候不建议修改集合本省。

 

IteratorListIterator有什么区别

Iterator:只能正向遍历集合,适用于获取移除元素。ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。

 

什么是HaspMapMap

Map是接口,Java 集合框架中一部分,用于存储键值对,HashMap是用哈希算法实现Map的类。

 

HashMapHashTable有什么区别

两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)HashMap作为新集合框架的一部分在Java21.2版本中加入。它们之间有一下区别:

 

HashMapHashtable大致是等同的,除了非同步和空值(HashMap允许null值作为keyvalue,而Hashtable不可以)

 

HashMap没法保证映射的顺序一直不变,但是作为HashMap的子类LinkedHashMap,如果想要预知的顺序迭代(默认按照插入顺序),你可以很轻易的置换为HashMap,如果使用Hashtable就没那么容易了。

 

HashMap不是同步的,而Hashtable是同步的。

 

迭代HashMap采用快速失败机制,而Hashtable不是,所以这是设计的考虑点。

 

什么叫做快速失败特性

从高级别层次来说快速失败是一个系统或软件对于其故障做出的响应。一个快速失败系统设计用来即时报告可能会导致失败的任何故障情况,它通常用来停止正常的操作而不是尝试继续做可能有缺陷的工作。当有问题发生时,快速失败系统即时可见地发出错误告警。在Java中,快速失败与iterators有关。如果一个iterator在集合对象上创建了,其它线程欲“结构化”的修改该集合对象,并发修改异常 (ConcurrentModificationException) 抛出。

 

怎样使Hashmap同步

HashMap可以通过Map m = Collections.synchronizedMaphashMap)来达到同步的效果。

 

如何区分使用Hashtable/HashMap

基本的不同点是Hashtable同步HashMap不是的,所以无论什么时候有多个线程访问相同实例的可能时,就应该使用Hashtable,反之使用HashMap。非线程程序开发安全的数据结构能带来更好的性能。

posted @ 2017-11-27 10:37  01齐  阅读(71)  评论(0)    收藏  举报