首页 » Web前端 » phpiteratorarray技巧_框架之ArrayList代码演示

phpiteratorarray技巧_框架之ArrayList代码演示

访客 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

ArrayList简介

ArrayList 是一个数组行列步队,相称于动态数组。
与Java中的数组比较,它的容量能动态增长。
它继续于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。

phpiteratorarray技巧_框架之ArrayList代码演示

ArrayList 继续了AbstractList,实现了List。
它是一个数组行列步队,供应了干系的添加、删除、修正、遍历等功能。

phpiteratorarray技巧_框架之ArrayList代码演示
(图片来自网络侵删)

ArrayList 实现了RandmoAccess接口,即供应了随机访问功能。

ArrayList 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。

ArrayList 实现java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。

ArrayList包含了两个主要的工具:elementData和size。

(01) elementData 是\"大众Object[]类型的数组\公众,它保存了添加到ArrayList中的元素。
实际上,elementData是个动态数组,我们能通过布局函数 ArrayList(int initialCapacity)来实行它的初始容量为initialCapacity;如果通过不含参数的布局函数ArrayList()来创建ArrayList,则elementData的容量默认是10。
elementData数组的大小会根据ArrayList容量的增长而动态的增长,详细的增长办法,请参考源码剖析中的ensureCapacity()函数。

(02) size 则是动态数组的实际大小。

ArrayList遍历办法

ArrayList支持3种遍历办法

(01) 第一种,通过迭代器遍历。
即通过Iterator去遍历。

Integer value = null;

Iterator iter = list.iterator();

while (iter.hasNext()) {

value = (Integer)iter.next();

}

(02) 第二种,随机访问,通过索引值去遍历。

由于ArrayList实现了RandomAccess接口,它支持通过索引值去随机访问元素。

Integer value = null;

int size = list.size();

for (int i=0; i<size; i++) {

value = (Integer)list.get(i);

}

(03) 第三种,for循环遍历。
如下:

Integer value = null;

for (Integer integ:list) {

value = integ;

}

下面通过一个实例,比较这3种办法的效率,实例代码(ArrayListRandomAccessTest.java)如下:

package lxh.demo.listdemotest;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

/

ArrayList 遍历办法和效率的测试程序

@author 沐兮沐楚

/

public class ArrayListRandomAccessTest {

public static void main(String[] args) {

List list = new ArrayList();

for(int i = 0; i < 100000; i++) {

list.add(i);

}

iteratorThroughRandomAccess(list);

iteratorThroughIterator(list);

iteratorThroughFor(list);

}

/

随机访问,通过索引值去遍历

/

public static void iteratorThroughRandomAccess(List list) {

long startTime = System.currentTimeMillis();

for(int i = 0; i < list.size(); i++) {

list.get(i);

}

long endTime = System.currentTimeMillis();

System.out.println(\"大众iteratorThroughRandomAccess: \"大众 + (endTime-startTime) + \"大众ms\公众);

}

/

通过迭代器遍历

/

public static void iteratorThroughIterator(List list) {

long startTime = System.currentTimeMillis();

for(Iterator iter = list.iterator(); iter.hasNext();) {

iter.next();

}

long endTime = System.currentTimeMillis();

System.out.println(\"大众iteratorThroughIterator: \公众 + (endTime-startTime) + \"大众ms\"大众);

}

/

for循环遍历

/

public static void iteratorThroughFor(List list) {

long startTime = System.currentTimeMillis();

for(Object obj : list) {

;

}

long endTime = System.currentTimeMillis();

System.out.println(\"大众iteratorThroughFor: \公众 + (endTime-startTime) + \"大众ms\"大众);

}

}

iteratorThroughRandomAccess: 3ms

iteratorThroughIterator: 4ms

iteratorThroughFor: 4ms

由此可见,遍历ArrayList时,利用随机访问(即,通过索引序号访问)效率最高,而利用迭代器的效率最低!

ArrayList示例

本文通过一个实例(ArrayListTest.java),先容 ArrayList 中常用API的用法。

package lxh.demo.listdemotest;

import java.util.ArrayList;

import java.util.Iterator;

/

ArrayList常用API的测试程序

@author 沐兮沐楚

/

public class ArrayListTest {

public static void main(String[] args) {

//创建ArrayList

ArrayList list = new ArrayList();

//添加元素

list.add(\"大众1\"大众);

list.add(\"大众2\"大众);

list.add(\"大众3\"大众);

list.add(\公众4\"大众);

//添加到第一个位置

list.add(0,\"大众5\"大众);

//输出当前List元素和大小

System.out.println(\公众element: \"大众 + list + \"大众\nsize: \公众 + list.size());

//获取第一个元素

System.out.println(\"大众the first element is: \"大众 + list.get(0));

//删除\"大众3\公众

list.remove(3);

//获取ArrayList的大小

System.out.println(\"大众Arraylist size = \"大众 + list.size());

//判断list中是否包含\"大众3\"大众

System.out.println(\"大众ArrayList contains 3 is: \"大众 + list.contains(3));

//设置第二个元素为10

list.set(1, \公众10\公众);

//通过Iterator遍历ArrayList

for(Iterator iter = list.iterator(); iter.hasNext();) {

System.out.println(\"大众next is: \"大众 + iter.next());

}

//将ArrayList转换为数组

String[] arr = (String[]) list.toArray(new String[0]);

for(String str : arr) {

System.out.println(\公众str: \"大众 + str);

}

//清空ArrayList

list.clear();

//判断ArrayList是否为空

System.out.println(\"大众ArrayList is empty: \公众 + list.isEmpty());

}

}

element: [5, 1, 2, 3, 4]

size: 5

the first element is: 5

Arraylist size = 4

ArrayList contains 3 is: false

next is: 5

next is: 10

next is: 2

next is: 4

str: 5

str: 10

str: 2

str: 4

ArrayList is empty: true

相关文章

Y360搜索,引领互联网搜索新潮流

在信息爆炸的时代,如何高效地获取所需信息成为每个人关注的焦点。作为我国领先的搜索引擎,Y360凭借其强大的搜索能力、精准的搜索结果...

Web前端 2024-12-23 阅读0 评论0

CS通讯协议,网络通信的基石

随着互联网技术的飞速发展,网络通信已经成为我们日常生活中不可或缺的一部分。在众多的网络通信协议中,CS通讯协议以其高效、稳定、安全...

Web前端 2024-12-23 阅读1 评论0

CMS插件网,助力网站建设,提升用户体验

在当今这个信息爆炸的时代,网站已经成为企业和个人展示自我、拓展业务的重要平台。为了满足不同用户的需求,网站建设逐渐成为一门艺术。而...

Web前端 2024-12-23 阅读0 评论0

Qt协议,构建高效跨平台应用程序的基石

在当今数字化时代,跨平台应用程序的开发变得日益重要。作为Qt框架的核心,Qt协议为开发者提供了一套高效、稳定的跨平台开发解决方案。...

Web前端 2024-12-23 阅读0 评论0

CEIP协议,推动数字经济发展的重要基石

随着互联网技术的飞速发展,数字经济的浪潮席卷全球。在这一过程中,CEIP协议(通用电子发票平台协议)作为我国数字经济发展的重要基石...

Web前端 2024-12-23 阅读0 评论0

BT协议,介绍其背后的原理与应用

自互联网诞生以来,人们对于资源共享的需求日益增长。BT(BitTorrent)协议作为一种流行的点对点(P2P)下载协议,凭借其高...

Web前端 2024-12-23 阅读0 评论0