文档章节

数组集合添加算法

凯哥学堂
 凯哥学堂
发布于 2017/07/12 20:52
字数 356
阅读 3
收藏 0

集合是无限存储的容器:

数组集合采用的算法是一开始先开辟好有限的空间进行存储放进来的数据。

等需要再次存放数据的时候,再去开辟一块比原来的空间多的容量之前,老的数据导入进新开辟的空间,然后再把新进来的数据放进空间里,依次这样进行开辟导入就形成了无限的容器。这就是数组集合的算法。 image

在java源码里面,采用的导入方式是直接调用本地系统语言来直接导入数据,这样提高了效率,一万毫秒才能完成的事情也许四千毫秒就执行完毕。

取消for循环导入使用System.arraycopy如下代码:

/**
 * 更多资料欢迎浏览凯哥学堂官网:http://kaige123.com 

 * @author 小沫
 */
//把objs的数据从最开始导入到objs1最开始的空间进行依次存放。objs里面有多少数据那么就导入多少。
System.arraycopy(objs,objs1,0,objs.length);

imageimage

//用下标得到数据
public Object get(int index){
return objs[index];
}
//得到大小
public int size(){
return index;
}

测试类:

public static void main(){
MyArrayList list=new MyArrayList();
long tem=System.currentTimeMillis();
for(int i=0;i<100000;i++){
list.add("abc"+i);
for(int j=0;j<list.size();j++){
System.out.println(list.get(j));
}
}
System.out.println("毫秒:"+(System.currentTimeMillis)-tem);
list.add("1231");
list.add("1232");
list.add("1233");
System.out.println(list.size());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}

© 著作权归作者所有

共有 人打赏支持
凯哥学堂
粉丝 16
博文 313
码字总数 278634
作品 0
东城
程序员
利用线性表的顺序结构求集合的并、交、差、补(C语言实现)

昨天用数据结构中的线性表的顺序结构实现了关于集合的并、交、差、补的集合运算,做个记录,希望也能帮助到其他人。 一、算法分析   (1)用数组A,B,C,E表示集合。假定A={1,3,4,5,6...

Tim_JX
2014/03/24
0
0
Dijkstra算法|单源最短路径|贪心算法

单愿最短路径描述:给定带权有向图G=(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称之为源(origin)。现在要计算从源到其他各顶点的最短路径的长度。这里的路径长度指的是到...

掬一捧
2012/09/26
0
0
System.Collections.Generic 源码阅读总结

ArrayList ,List ArrayList 和 List 都是不限制长度的集合类型 ,List相比ArrayList 就内部实现而言除了泛型本质没有太大区别。不过为避免装箱拆箱问题,尽可能使用List 集合内部是由数组实现...

寂灭万乘
08/03
0
0
关于 Java Collections API 您可能不知道的 5 件事

对于很多 Java 开发人员来说,Java Collections API 是标准 Java 数组及其所有缺点的一个非常需要的替代品。将 Collections 主要与 联系到一起本身没有错,但是对于那些有探索精神的人来说,...

红薯
2010/05/26
406
1
Bloom Filter算法

集合数据结构一般都有这么一个方法:contains。其作用就是判断给定的元素是否存在集合中,这是一个常用的方法。其最简单的内部实现即遍历集合内的元素,一个个的判断是否与给定元素相等。为了...

长平狐
2012/06/11
145
0

没有更多内容

加载失败,请刷新页面

加载更多

gson1.7.1线程并发导致空指针问题

java.lang.NullPointerExceptionat com.google.gson.FieldAttributes.getAnnotationFromArray(FieldAttributes.java:231)at com.google.gson.FieldAttributes.getAnnotation(FieldAttribut......

东风125
33分钟前
1
0
以太坊RPC接口使用

以太坊RPC接口文档: https://github.com/ethereum/wiki/wiki/JSON-RPC#web3_clientversion 使用方式: 比如我要调用某个合约的balanceOf(address _owner)方法。 因为没有改变合约的状态,所以...

王坤charlie
59分钟前
2
0
C#下的一个好用的日历库(sxtwl_cpp),支持农历转公历,和公历转农历等功能

sxtwl_cpp是寿星天文历的C++版本实现。支持多种语言的绑定 代码首页 懒人包 懒人包使用方法 1、右链工程中的引用-》添加引用-》浏览-》选中dotnet目录下的sxtwl.net.dll 2、生成解决方案-》找...

元谷
59分钟前
1
0
C++基础知识

链接:https://zhuanlan.zhihu.com/p/38399566 本文主要提一下以下三个区别: 引用必须初始化,而指针可以不初始化。 我们在定义一个引用的时候必须为其指定一个初始值,但是指针却不需要。 ...

悲催的古灵武士
今天
1
0
Oracle备份脚本,保留10天数据

@echo off echo 删除10天前的备分文件和日志forfiles /p "D:\oracleback\backfile" /m *.dmp /d -10 /c "cmd /c del @path" forfiles /p "D:\oracleback\backfile" /m *.log /d -10......

lyle_luo
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部