- 浏览: 551862 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (478)
- lucene (45)
- oracle (19)
- nutch (2)
- blog (2)
- 垂直搜索 (19)
- java综合 (89)
- spring (15)
- Hibernate (9)
- Struts (9)
- Hadoop (16)
- Mysql (12)
- nosql (10)
- Linux (3)
- MyEclipse (4)
- Ant (1)
- 设计模式 (19)
- JBPM (1)
- JSP (1)
- HtmlParser (5)
- SVN (2)
- 插件 (2)
- 收藏 (7)
- Others (1)
- Heritrix (18)
- Solr (4)
- 主题爬虫 (31)
- 内存数据库 (24)
- 分布式与海量数据 (32)
- httpclient (14)
- Tomcat (1)
- 面试宝典 (6)
- Python (14)
- 数据挖掘 (1)
- 算法 (6)
- 其他 (4)
- JVM (12)
- Redis (18)
最新评论
-
hanjiyun:
本人水平还有待提高,进步空间很大,看这些文章给我有很大的指导作 ...
JVM的内存管理 Ⅲ -
liuxinglanyue:
四年后的自己:这种方法 不靠谱。 使用javaagent的方式 ...
计算Java对象占用内存空间的大小(对于32位虚拟机而言) -
jaysoncn:
附件在哪里啊test.NoCertificationHttps ...
使用HttpClient过程中常见的一些问题 -
231fuchenxi:
你好,有redis,memlink,mysql的测试代码吗?可 ...
MemLink 性能测试 -
guyue1015:
[color=orange][/color][size=lar ...
JAVA同步机制
clone一个副本:
Java代码
- public Object clone() {
- try {
- ArrayList<E> v = (ArrayList<E>) super.clone();
- v.elementData = Arrays.copyOf(elementData, size);
- v.modCount = 0;
- return v;
- } catch (CloneNotSupportedException e) {
- // this shouldn't happen, since we are Cloneable
- throw new InternalError();
- }
- }
转换为数组:
Java代码
- public Object[] toArray() {
- return Arrays.copyOf(elementData, size);//调用Arrays.copyOf()方法
- }
下面是转换为泛型数组:
Java代码
- public <T> T[] toArray(T[] a) {
- if (a.length < size)
- // Make a new array of a's runtime type, but my contents:
- return (T[]) Arrays.copyOf(elementData, size, a.getClass());
- System.arraycopy(elementData, 0, a, 0, size);
- if (a.length > size)
- a[size] = null;
- return a;
- }
范围检查:臭名昭著的 IndexOutOfBoundsException异常
Java代码
- private void RangeCheck(int index) {
- (index >= size)//数组越界,这里没有判断小于0的情况
- throw new IndexOutOfBoundsException(
- ndex: "+index+", Size: "+size);
- }
通过下标得到一个元素:
Java代码
- public E get(int index) {
- RangeCheck(index);//先检查是否越界
- return (E) elementData[index];//返回的是数组中的下标 }
通过下标和一个元素赋值,返回的是原先的值:
Java代码
- public E set(int index, E element) {
- RangeCheck(index);//先检查是否越界
- E oldValue = (E) elementData[index];//通过临时变量把当前下标的值保存
- elementData[index] = element;//赋值
- return oldValue;//注意返回的是当前下标的原先值
- }
添加一个新的元素到末尾,前面说道新增方法都要先调用ensureCapacity方法:
Java代码
- public boolean add(E e) {
- ensureCapacity(size + 1); //大小加一 // Increments modCount!!
- elementData[size++] = e;//size默认是0所以是从0开始赋值
- return true;
- }
API文档中的说明是:将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。通俗的说法是在指定位置插入元素,指定元素和后面的元素后移
这个方法和set(int index, E element) 不一样,set只是把元素赋值给指定的下标同时返回下标的原先值.
add(int index, E element)的判断越界是通过元素的大小来判断的
所以如果
Java代码
- ArrayList list=new ArrayList();
- list.add(1, 8);
- //报错,因为size元素大小还是0
- //如果l
- list.add(0,"")//就可以
如果一致add同一下标所有后续元素索引加1
如下:
Java代码
- ArrayList list=new ArrayList();
- list.add(0, 8);
- list.add(0, 8);
- list.add(0, 8);
- System.out.println(list);
- //结果为[8, 8, 8]
:
Java代码
- public void add(int index, E element) {
- if (index > size || index < 0)//判断是否越界,注意这里是以元素的个数来判断的
- throw new IndexOutOfBoundsException(
- "Index: "+index+", Size: "+size);
- ensureCapacity(size+1); // Increments modCount!!
- System.arraycopy(elementData, index, elementData, index + 1,
- size - index);
- //源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到
- //目标数组中的 destPos 到 destPos+length-1 位置
- elementData[index] = element;
- size++;//元素加一
- }
发表评论
-
熔岩的相关文章收藏
2011-02-20 21:57 1310HttpClient4 Post XML到一个服务器上 纯J ... -
我新弄的博客和论坛+新浪微博
2011-02-01 00:05 1688主博客是:http://www.liuxinglany ... -
Java编程思想 (收藏)
2011-01-07 15:34 9101、面向对象的特性 2、内存分配 3、 ... -
Java解惑系列(收藏)
2011-01-07 15:30 11241.1 java解惑你知多少(一) 1.2 jav ... -
2010 iData Forum 演讲幻灯片
2010-12-25 21:44 9802010年iData Forum数据库大会顺利结束,在 ... -
2010年6月的好文推荐
2010-12-20 20:39 804转自:人云亦云 最近发现一个非常不错的博客,叫dbthi ... -
JAVA通过JNI调用本地C语言方法
2010-12-19 20:49 742Java特性深受人们喜爱, ... -
java集合类比较
2010-12-19 20:49 1214Vector(转者注:现在Ve ... -
java对各种文件的操作详解(转)
2010-12-19 20:31 769http://blog.csdn.net/Java2King/ ... -
从一个http请求的详细过程---理解计算机网络
2010-12-18 13:58 1441http://duanple.blog.163.com/b ... -
(转)学习:一个并发的Cache
2010-12-17 17:11 952public class Memoizer implem ... -
Groovy是怎么实现createArray的
2010-12-16 19:57 692Groovy是一个基于 Java虚拟机的敏捷 动态语言。构 ... -
24款较经典的Page翻页分页css代码
2010-12-12 17:52 716<!DOCTYPE html PUBLIC &qu ... -
比较优秀的值得学习的J2EE开源项目
2010-12-12 12:53 955这篇文章写在我研究J2 ... -
J2EE的部分jar的作用
2010-12-05 10:44 1042来自:深沉的船 activation.jar:与javaMa ... -
Java的多线程Socket通信
2010-12-04 21:21 834转:http://wangtong40.iteye.com/b ... -
Java的单线程Socket通信
2010-12-04 21:21 838package com.wangtong.networ ... -
Servlet 3.0 实战:异步 Servlet 与 Comet 风格应用程序
2010-12-04 21:19 874转自http://www.ibm.com/develope ... -
高效编程之欲擒故纵
2010-12-04 13:36 770转:http://www.aqee.net/2010/11/3 ... -
架构师给程序员的一封信
2010-12-04 13:35 791转:http://www.aqee.net/2010/ ...
相关推荐
Web用户管理系统源代码分析 一、Java数据库连接 在Web用户管理系统源代码中,我们可以看到使用Java连接Oracle数据库的示例代码。首先,需要导入必要的Jar包和加载驱动程序。然后,使用DriverManager.getConnection...
C# 自动采集程序源代码分析 在这篇文章中,我们将对 C# 自动采集程序源代码进行分析和解释,涵盖了该程序的主要功能、变量声明、方法实现等方面。 标题和描述 该程序的标题和描述都是 "C# 自动采集程序源代码",...
网络爬虫源代码解析 本文将对网络爬虫源代码进行详细的解析,了解爬虫的实现机制和关键技术要点。 爬虫的基本概念 网络爬虫是一种自动化程序,用于从互联网上抓取和提取数据。爬虫可以根据特定的规则和算法来抓取...
本文档将对C#上位机串口通信助手源代码进行详细的分析和解释,旨在帮助读者更好地理解串口通信的实现机制。 首先,让我们来了解串口通信的基本概念。串口通信是一种常用的数据传输方式,它通过串口连接两个或多个...
Java 项目 ATM 银行系统源代码分析 本文档是 Java 项目 ATM 银行系统的源代码,下面是对该项目的详细分析和知识点摘要: 1. Java 语言基础 在该项目中,我们可以看到大量的 Java 语言基础知识点的应用,例如: *...
系统的源代码使用C#语言编写,使用ArrayList动态数组存储学生信息,使用switch语句选择应用选项,使用goto Return返回主菜单。 该系统实现了一个功能齐全的学生成绩管理系统,能够满足学生成绩管理的需求。
java jdk1.8 源码 Java-source-reading 缓慢更新一些个人学习java相关源码过程中的笔记,在这里你将不可避免地看到以下情况: 个别不懂/没想好的地方留空待补全 ...ArrayList LinkedList HashMap HashSet LinkedHashMap
源代码分析 1、添加元素到列表尾端(Appends the specified element to the end of this list.) ArrayList:当所需容量超过当前ArrayList的⼤⼩时,需要进⾏扩容,对性能有⼀定的影响。 优化策略:在能有效评估...
一.Animal类的设计要求: 根据实际需求设计Animal类,并完成以下功能: 1. 输出全部信息 2. 对2个实例进行比较 3. 使用static对共同的属性进行修饰 ...8. 利用ArrayList集合收集动物的年龄信息,并对其进行分析。
最近写了个小程序用到了C#4.0中的线程安全集合。想起很久以前用C#2.0开发的时候写后台windows服务,为了利用多线程实现生产者和消费者模型,经常要封装一些线程安全...我们从Synchronized方法入手,分析它的源代码看是
常规Java工具,算法,加密,数据库,面试题,源代码分析,解决方案: Alibaba_Druid AngularJS_String_SubString Big_Data_ETL C# CROS CrossOrigin_Request Eclipse_Referenced_File_Contains_Errors Git_Language_...
本文实例讲述了Android编程之控件...源代码: package com.list; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.util.Log; import
1、 ArrayList<Integer> list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。 2、 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出...
Asp.net地址转义(分析)加强版 Web的桌面提醒(Popup) Using the Popup Object Click button only once in asp.net 2.0 Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制...
我们知道,在Android系统中,Activity是以堆栈的形式组织...从前面Android应用程序启动过程源代码分析一文可以知道,应用程序进程中的每一个Activity组件在Activity管理服务ActivityManagerService中都对应有一个Activi
29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。 public void test(int i) { lock(this) { if (i>10) { i--; test(i); } } } 答:不会发生死锁,(但...
二、C#中动态加载水晶报表的步骤 在C#中动态加载水晶报表需要遵循以下步骤: 1. 创建一个水晶报表模版 首先需要创建一个水晶报表模版,报表模版可以是空白的,也可以是已经设计好的报表模版。 2. 添加记录集...
主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成一系列实质性操作,而且还可以扩展. 设计模式引言 设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。...
5 4.1 操作界面设计 5 4.2 类成员变量及方法设计 6 4.3* 数据库设计 7 4.4 源代码分析 8 5 系统部署及使用说明 14 记忆测试系统 1. 题目简介 记忆测试系统通过回忆法测试记忆能力,测试手段分为初级,中级,高级...
C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 <br>1.1 Visual Studio开发环境安装与配置 2 <br>0001 安装Visual Studio 2005开发环境须知 2 <br>0002 配置合适的Visual Studio 2005...