- 浏览: 375140 次
- 来自: 北京
文章分类
- 全部博客 (237)
- XML (6)
- JavaSE (39)
- Junit (1)
- Maven (10)
- JavaScript (12)
- JavaEE (16)
- HTML5 (10)
- java多线程 (8)
- Hibernate (30)
- Java反射 (3)
- Spring (11)
- Struts (1)
- svn (2)
- linux (12)
- 代码实例 (1)
- 设计模式 (1)
- UML (1)
- javassist (1)
- Oracle (3)
- Hibernate异常 (9)
- DWR (6)
- Java泛型 (2)
- SpringMVC (11)
- Dbunit (3)
- github (2)
- Algorithm (1)
- zTree (1)
- jquery (7)
- freemarker (4)
- mysql (5)
- ffmpeg (1)
- 编码 (1)
- lucene (15)
- hadoop (1)
- JVM (1)
- Regular Expressions (5)
- myeclipse (1)
- 爬虫 (7)
- 加密 (3)
- WebService (2)
- Socket (2)
- Windows (1)
最新评论
-
wxpsjm:
好直接
HV000030: No validator could be found for type: java.lang.Integer. -
wxhhbdx:
学习了,对新手来说很不错的教程。
SpringMVC入门 (二) 数值传递 -
xgcai:
正好在学dwr
DWR入门 (二)用户实例
刚看了一下ArrayList里实现Iterator部分的源码, 照着写一点点,学习一下。
元素说明:
Object[] elementData-> 存放元素的数组。 在ArrayList被初始化的时候会默认大小为10.
int size->集合的size
private class Itr ->内部私有类,实现Iterator接口. 该类可以对elementData数组进行操作。
运行代码:
运行结果:
constructor int
constructor
hello
world
hello
world
异常:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.lj.compareTo.Test1.main(Test1.java:25)
这个异常是因为没有在类中实现AbstractList中定义的方法。
这里是没有写add()方法。
public class JinglingList<E> extends AbstractList<E> implements List<E>,Cloneable,RandomAccess { private transient Object[] elementData; private int size; public JinglingList(int initialCapacity){ System.out.println("constructor int"); this.elementData=new Object[initialCapacity]; } public JinglingList(){ this(10); System.out.println("constructor"); } public boolean add(E e) { elementData[size++]=e; return true; }; public Iterator<E> iterator(){ return new Itr(); } private class Itr implements Iterator<E>{ int cursor; //index of next element to return int lastRet=-1; //index of last element returned;-1 if no such int expectedModCount=modCount; @Override public boolean hasNext() { //只要指针所在位置不等于集合size,就返回true。 return cursor!=size; } @Override public E next() { int i=cursor; Object[] elementData=JinglingList.this.elementData; //指针指向数组的下一个 cursor=i+1; //返回指针指向的数组元素(这里是i,cursor已经指向下一个元素 return (E)elementData[lastRet=i]; } @Override public void remove() { // TODO Auto-generated method stub } } @Override public E get(int index) { // TODO Auto-generated method stub return elementData(index); } E elementData(int index){ return (E) elementData[index]; } @Override public int size() { // TODO Auto-generated method stub return size; } }
元素说明:
Object[] elementData-> 存放元素的数组。 在ArrayList被初始化的时候会默认大小为10.
int size->集合的size
private class Itr ->内部私有类,实现Iterator接口. 该类可以对elementData数组进行操作。
运行代码:
public class Test1 { public static void main(String[] args) { List list=new JinglingList(); list.add("hello"); list.add("world"); Iterator it=list.iterator(); while(it.hasNext()){ System.out.println(it.next()); } System.out.println(list.get(0)); System.out.println(list.get(1)); } }
运行结果:
constructor int
constructor
hello
world
hello
world
异常:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.lj.compareTo.Test1.main(Test1.java:25)
这个异常是因为没有在类中实现AbstractList中定义的方法。
这里是没有写add()方法。
发表评论
-
Socket编程的HelloWorld实例
2014-11-07 15:05 899public class Client { ... -
ImageIO宋体出现小方框的解决
2014-11-03 16:34 924http://www.blogjava.net/yuanqix ... -
ArrayList根据条件+for循环批量删除的方法
2014-09-23 11:39 2719场景如下: ArrayList<Obj> list ... -
Java内部类的实例化
2014-08-06 15:51 1033class A{ getInstance(){ ... -
通过Thread.sleep把任务平均分配给线程按顺序执行的小例子
2014-07-22 10:46 1078package com.lj.test.JavaSe4; ... -
输入两个整数, 计算百分比
2014-07-21 18:01 1463public static String getPercen ... -
timer cancel方法的一个小实例
2014-07-21 12:14 1133package com.lj.timer; import ... -
通过Calendar获取上个月的最后一天
2014-06-26 12:11 2865Calendar cal=Calendar.getI ... -
通过BigInteger进行数字进制的相互转换
2014-06-24 11:09 25501. 十六进制转换为十进制 BigInteger deci ... -
[转]RSA实例
2014-06-18 17:27 908package com.lj.rsa; import j ... -
[转]sun.misc.BASE64Encoder找不到jar包的解决方法
2014-06-18 15:43 9411.右键项目-》属性-》java bulid path-》jr ... -
空Object转换String的陷阱
2014-06-17 15:45 804Object a=null; String b ... -
Java Convert Long to Date
2014-06-16 18:06 766问题: I have list with long value ... -
[转]JAVA中List&Set转换
2014-06-07 14:23 526JAVA中List&Set转换 list = new ... -
aes加密时的Illegal key size or default parameters
2014-06-06 14:21 4191KeyGenerator kgen = KeyGenerat ... -
String.replaceLast()
2014-06-03 16:02 1093http://stackoverflow.com/questi ... -
通过正则表达式来获取json数值
2014-05-23 11:39 13private String getJsonValue(Str ... -
java找不到或无法加载主类
2014-05-19 13:21 1280用CMD运行java +类名, 居然碰到这个问题。 编译是没有 ... -
Java转义字符笔记 |
2014-01-12 21:01 916数据库有一个关键字列-keyword,里面存放的关键字格式如下 ... -
char和int类型相互转换
2013-12-10 18:43 1373今天看到别人使用一个方法 ->String.indexO ...
相关推荐
这个资源的目的是通过模拟Java ArrayList的Iterator实现,帮助理解Iterator设计模式。 首先,我们来详细解释一下ArrayList和Iterator的概念。ArrayList是一个可变大小的数组,它允许我们在任何位置插入和删除元素。...
本篇文章将深入探讨ArrayList的源码,了解其内部实现机制,以及在实际编程中如何有效地使用ArrayList。 1. **ArrayList的构造函数** ArrayList提供了多个构造函数,包括无参构造、指定容量构造和初始化容量并赋值...
源码分析中,我们还可以看到ArrayList是如何实现迭代器(Iterator)的。迭代器是Java集合框架的重要组成部分,允许我们遍历ArrayList的元素而不需要暴露底层的实现细节。ArrayList的迭代器实现了hasNext()和next()...
在了解ArrayList的源码分析时,我们主要探讨其在Java Development Kit (JDK) 1.8中的实现。ArrayList是一个非常重要的集合框架,用于动态数组的实现,其功能类似于数组,但可以在运行时动态调整大小。它是一个非线程...
源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556
反编译系统的,只是做个例子。 为了凑够20个字,我多打几个字……
### ArrayList源码解析(JDK 1.8) #### 概述 `ArrayList`是Java集合框架中的一个核心组件,它提供了动态数组的功能。与固定大小的数组不同,`ArrayList`可以随着元素的增加而自动扩展其容量。在JDK 1.8中,`...
Java中ArrayList类的源码解析 ArrayList是Java中最常用的集合类之一,它实现了List接口,继承自AbstractList抽象类。在ArrayList中,我们可以看到它的源码实现了Iterable接口、List接口和Collection接口。下面我们...
计算机后端-Java-Java核心基础-第24章 集合01 14. ArrayList的源码分析.avi
ArrayList 是 Java 中一种常用的列表类,它是 List 接口的实现,基于动态数组的数据结构。ArrayList 的核心特性在于其能够动态地调整数组的大小以适应元素数量的变化,从而提供了比传统固定大小数组更为灵活的使用...
第二章 ArrayList源码解析 ArrayList是Java集合框架中的一种动态数组,它继承自AbstractList,并实现了List接口。ArrayList主要用于存储可变大小的对象列表,它的核心是通过一个Object类型的数组elementData来实现...
JDK8的ArrayList源码文件
《硬核ArrayList源码分析——深入理解Java集合框架》 ArrayList是Java集合框架中的一个重要组成部分,它是基于动态数组实现的列表。在Java 1.8版本中,ArrayList的实现细节和内部工作原理对于理解其性能和行为至关...
ArrayList 源码深度解析 一、重新认识ArrayList 什么是ArrayList? ArrayList是基于数组实现的List类,封装了一个动态再分配的Object数组,以达到可以动态增长和缩减的索引序列。 长啥样? 如图,是一个长度为6,...
图文并茂,能让大家很好的理解java中这个重要的知识点。 此文档需要wps或者office软件来查看,如果你没有此软件,到http://www.wps.com.cn 下载wps即可查看此文档。 注:本人所有资源都是共享的,的资源分都是0!
本资源根据个人学习和总结,主要介绍Java中ArrayList扩容机制源码的解析,主要包含文字和代码等内容,以源码的形式进行分析,详细介绍了ArrayList扩容机制的整个流程,特此将该资源分享
能学到什么:ArrayList的源码分析,自动扩容和自动缩容的源码分析,相关参数的深度解析,从是什么,为什么,怎么做三个角度进行讲解,用通俗易懂的白话进行介绍,LinkedList和Vector以及ArrayList的区别以及使用场景...