java api之实现(上)[Java编程]
本文“java api之实现(上)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
实现
实现是用来存储对象集 的实际数据对象,它实现了在前面的章节中所描写的 核心 对象集 接口 .以下章节将描写三种实现:
通用实现
通用实现是大众类,它供应核心对象集接口的主要实现.
包装器实现
包装器实现与别的实现(普通为通用实现)一同供应附加功效.
便利实现
便利实现是小型实现,普通可通过静态办法(static factory methods)得到,它可便利、高效地为特别 对象集 (象 singleton sets)替换通用实现.
别的,按照JDK的abstract implementations,你也可以成立自己的实现.这在一个单独的课程中有所描写,因为它属于高级课程.它不是分外难,但相对来说,需求它的人很少.
通用实现
以下表格对通用实现做了小结.该表突出显示了它们的正常命名款式:名称均属于 情势, 这里的 是由类实现的核心对象集接口, 而 表示了在该实现底层的数据构造.
实现 | |||||
Hash Table | Resizable Array | Balanced Tree | Linked List | ||
接口 | Set | HashSet | TreeSet | ||
List | ArrayList | LinkedList | |||
Map | HashMap | TreeMap |
JDK 1.2 供应了每个接口的两种实现 (Collection是个例外,它没有直接的实现,但可当作别的 对象集 接口的最小公分母). 在每一个接口中,此中一种实现明显的是主实现: 要利用的那个,别的东西是一样的.主实现是 HashSet, ArrayList 和 HashMap. 注意SortedSet和SortedMap接口在上表中没有列出.它们各自都有一个实现,这些实现(TreeSet 和 TreeMap) 被列在 Set 和 Map 栏里.
这些实现不但具有一致的名称,并且还有一致的行为.它们都实现全部的包含在它们的接口中的选项操作(optional operations),都答应 null 元素、键和值.每一种实现都是差别步的.它们都具有快速失效迭代功效, 这可以在迭代历程中检测不法并发更改,并快速完好地失效,而不是冒在此后不可预知的时间里发生肆意不可肯定行为的风险.全部的实现都是可序列化的(Serializable), 并都支持大众 clone 办法.
新实现差别步这一事实代表与过去的一此中止:Vector 和 Hashtable 在 JDK 1.2 从前的版本中是同步的.之所以采取新的做法是因为 对象集 常常以一种同步在此中没有好处的方法所利用.这样的利用包含单线程利用、只读利用以及作为一个较大的数据对象(它有它自己的同步)的一部份而利用.普通,API计划的惯例是不让用户为不必要的性能费钱.再者,不必要的同步在某中情形下大概会招致死锁.
假如你需求一个同步的 对象集, synchronization wrappers(同步包装器)(将在 下一节介绍)答应肆意 对象集 转换为同步对象集.因此,对新的 对象集 实现来说,当它对旧的 对象集 是强迫性的时刻,同步是可选的. 作为一个经验法例,你应当考虑的是接口,而不是实现.这就是为什么在这一节中没有编程实例的缘由.对大部份情形来说,实现的挑选仅影响性能.首选的气势(就象在 接口课程 中所提到的)是在成立一个 对象集 时挑选一个实现,并立行将一个新的 对象集 赋值给呼应接口范例的一个变量(或将该 对象集 传送给参数为此接口范例的办法).这样,程序将不会依靠于在一个给定的实现中肆意增添的办法, 并给程序员和保护人员以疾速改变实现的安闲(假若有关性能答应这样做的话).
下面将扼要谈论通用实现.实现的性能的描写利用词汇如 constant, log, linear, n log(n) 和 quadratic等.这些词汇指履行操作的关于时间复杂性(time complexity)的渐进上限(asymptotic upper bound). 全部这些可够你消化的了,不过假如你不睬解,也没太大关系.有爱好的话可以阅读肆意一本算法教科书,那上面有关于这类内容的注释.有一件事是应当紧记的,那就是:这种性能的器量有它的范围性.有时名义上较慢的实现关于你所实际利用大小的对象集来说大概要快.假若有些猜疑,估计一下该性能.
以上是“java api之实现(上)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |