jdk中容器源码的一些疑问

问题描述

ListIterator中继承了Iterator。为什么还要将Iterator的方法重载一边呢?另外concrete collection比如:ArrayLIst为什么在extends AbstractList之后还要去 implements list呢?不晓得哪位大侠帮我解惑

解决方案

个人看法,可能不合理,仅供参考,以上是处于可读性的角度考虑的:1)ListIterator:提供两个方向的迭代器,如果只有hasPrevious没有hasNext,可能看起来会比较奇怪,毕竟Iterator中的hasNext的语义是“单向”的判断,并不是“向前”的判断,但是ListIterator将HasNext作为向前判断的语义了。 又由于希望调用者能够将ListIterator看做是Iterator,所以做了继承。 去掉这个方法声明实际上是可以的(在方法声明、Javadoc解释方面做进一步明确化);2)ArrayLIst implements List,让读者比较容易能够知道是这个接口关系,或许和javadoc生成有关系(这个没有测试过)

时间: 2024-07-29 01:23:16

jdk中容器源码的一些疑问的相关文章

解决java 查看JDK中底层源码的实现方法_java

1.点 "window"-> "Preferences" -> "Java" -> "Installed JRES"2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE)3.选中rt.jar文件的这一项:"c:\program files\ja

安卓开发中Bitmap源码实例

 安卓开发中Bitmap源码实例 package android.graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; public final class Bitmap extends _Original_Bitmap { private Bu

java-Java实现自动识别文件夹中图片路径?上传到网站中的 源码,很急

问题描述 Java实现自动识别文件夹中图片路径?上传到网站中的 源码,很急 Java实现自动识别文件夹中图片路径,上传到网站中的 源码,比如,我有一个文件夹,里面有许多图片,需要发布到一个网站 解决方案 你直接复制到服务器不必这个快??? 解决方案二: 这个发布到服务器不是把地址发布到服务器,而是把图片上传的服务器,服务器没有C盘D盘什么的,它是图片上传到服务其的一个指定地址,在把这个地址存入类中对应的数据库字段中,在通过掉用这个地址获得图片,如果是在本地就可以通过String name=fil

android开发-如何用Android Studio将源码打包成AAR文件,并且AAR文件中包含源码

问题描述 如何用Android Studio将源码打包成AAR文件,并且AAR文件中包含源码 如何用Android Studio将源码打包成AAR文件,并且AAR文件中包含源码.类似与jar文件打包后可以看到源代码一样. 解决方案 android studio本地引用aar打包文件(.aar)Android studio 打包aarandroid studio 把源码和资源文件一起打包生成aar包

eclipse中的源码如何打包为.exe文件

问题描述 eclipse中的源码如何打包为.exe文件 如何将eclipse中编写的程序源码导出,最后转为.exe文件,就像网上下载的软件那样的格式,让那些没安装eclipse的电脑也能运行你写的程序,求赐教.详细的步骤和使用的软件 解决方案 eclipse只是开发工具,它支持很多平台和编程语言,假设你用java编写客户端程序,那么可以参考http://jingyan.baidu.com/article/358570f6727bb7ce4724fc88.htmlhttp://blog.csdn.

canny-OPENCV FOR ANDROID 中的源码怎么查看

问题描述 OPENCV FOR ANDROID 中的源码怎么查看 Opencv里面的Canny定义有两种?分别为Canny_0,Canny_1,请问如何在Eclipse里面查看Canny_0()与Canny_1() 的源代码? 代码如下: private static native void Canny_0(long image_nativeObj, long edges_nativeObj, double threshold1, double threshold2, int apertureS

[jjzhu学java]之JDK集合框架源码分析

Java Collection Collection接口 AbstractCollection类 AbstractList类 Vector类 Stack栈 ArrayList AbstractSequentialList LinkedList线性链表 Map接口 AbstractMap HashMap LinkedHashMap treeMap HashTable 总结 Java Collection 图中实线边框表示的是实现类(ArrayList, Hashtable等),虚线边框的是抽象类(

JDK ArrayList 删除源码

ArrayList是JDK提供的一个数组list,其实现基于java的数组, elementData是声明在该类里面的实际保存数组的变量:   private transient Object[] elementData;   删除: remove的时候,需要遍历整个数组,找到匹配的元素, 然后调用内部私有方法,进行快速删除(fastRemove),这个删除方法不检查数组下标长度等. public boolean remove(Object o) { if (o == null) { for (

Node.js中 require() 源码详细讲解

时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS 格式. 这种格式的核心就是 require 语句,模块通过它加载.学习 Node.js ,必学如何使用 require 语句.本文通过源码分析,详细介绍 require 语句的内部运行机制,帮你理解 Node.js 的模块机制. 一.require() 的基本用法 分析源码之前,先介绍 require 语句的内部逻辑.如果你只想了解 require 的用法,只看这一段就够了.