一、构造
从构造方法我们可以看出,它和一般的List一样,可以预先设置容器大小,默认的大小是10:
public SparseArray() {
this(10);
}
public SparseArray(int initialCapacity) {
......
}
二、增
它有两个方法可以添加键值对:
public void put(int key, E value)
public void append(int key, E value)
在存储数据的时候,是采用了二分法方式,以下是它采用二分法的源码:
private static int binarySearch(int[] a, int start, int len, int key) {
int high = start + len;
int low = start - 1;
while (high - low > 1) {
int guess = (high + low) / 2;
if (a[guess] < key) {
low = guess;
continue;
}
high = guess;
}
if (high == start + len)
return start + len ^ 0xFFFFFFFF;
if (a[high] == key) {
return high;
}
return high ^ 0xFFFFFFFF;
}
所以,它存储的数值都是按键值从小到大的顺序排列好的。
三、查
它有两个方法可以取值:
public E get(int key)
public E get(int key, E valueIfKeyNotFound)
最后一个从传参的变量名就能看出,传入的是找不到的时候返回的值
查看第几个位置的键:
public int keyAt(int index)
查看键所在位置,由于采用二分法查找键的位置,所以没有的话返回小于0的数值,而不是返回-1,这点要注意,返回的负数其实是表示它在哪个位置就找不到了,如果你存了5个,查找的键大于5个值的话,返回就是-6:
插入、查找和删除操作的效率都是log2(n)。 在插入的时候还要对整个数组进行移动,代价也是不低的。 对HashMap来说,它更省空间和省了auto-boxing的开销。
分享到:
相关推荐
<br><br>目录介绍<br>第1章 Visual C++网络通信编程基础 1<br>1.1 Winsock1.1编程技术 1<br>1.1.1 Winsock的基本概念 1<br>1.1.2 Winsock的编程特点 2<br>1.1.3 Winsock基本的API 2<br>1.1.4 Winsock的...
<br>C++的沉迷与爱恋 .txt<br>Curses编程简介.txt<br>Kingofark关于学习C++的50个观点 .txt<br>kingofark详解他的50个观点(上) .txt<br>kingofark详解他的50个观点(下) .txt<br>kingofark详解他的50个观点(中).txt...
包含<br> c函数速查.chm<br> c语言编程宝典之一.chm<br> c语言教室.chm<br> c语言开发实例详解.rar<br> mfc深入浅出.chm<br> tc图形函数详解.chm<br> turbo c 2.0 函数中文说明大全.txt<br> vc++ 编程指南.chm<br> ...
* 使用 BETWEEN 进行范围查询:SELECT < 列名 > FROM < 表名 > WHERE < 列名 > BETWEEN < 数值 1 > AND < 数值 2 > * 使用 IN 进行多值查询:SELECT < 列名 > FROM < 表名 > WHERE < 列名 > IN (< 数值 1 >, < 数值 ...
英文名<br>Microsoft.Network.Programming.for.Microsoft.Windows.1E<br>Microsoft.Network.Programming.for.Microsoft.Windows.2E<br><br>中文名<br>windows网络编程<br><br>作者<br>Anthony Jones and Jim Ohlund...
<br><br>注册表基础知识 <br>注册表的由来 注册表的数据结构 <br>注册表的编辑 注册表的查找与修改 <br>注册表的内部结构 注册表的分析 <br> <br>注册表--根键详解 <br>HKEY_CLASSES_ROOT根键详解 <br>HKEY_USERS根...
里面包括<html><bean><logic><tiles><nested><br>五组标签库的详细讲解,每个标签库都对应着<br>相应的例子(标签多的标签库有两个例子)。<br>另外还有国际化(文字国际化/图片国际化)、<br>表单验证,以及验证...
孙卫琴《Tomcat与Java Web开发技术详解》培训讲义.rar<br>01__JavaWeb应用简介.pdf<br>02_Servlet技术.pdf<br>03_JSP技术.pdf<br>04_使用HTTP会话(Session).pdf<br>05_使用JavaBean.pdf<br>06_使用Servlet过滤器....
第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面:<br><br> T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更有效和更可靠;<br><br> HTTP (超文本传送...
动态语言支持<br>第5篇 展现层应用<br>第19章 Spring MVC之一<br>第20章 Spring MVC之二<br>第21章 集成其他Web框架<br>第6篇 其他<br>第22章 Spring应用的测试<br>第23章 Spring工具类盘点<br>附录A 各种数据库连接...
其中,`<PAD>`是填充字符,`<ZDLE>`是数据链路控制字符,`<FormatType>`表示包格式类型,`<PacketType2>`表示包类型(ZRQINIT),`<Flags8>`为状态标志,`<CRCCheckBytes4>`为CRC校验码。 ##### 2. 接收初始化响应...
如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有好的方法,也分享出来...<span>span</span> <div> <span>span</span> <a> <span>1</span> </a> </div> <div> <a> <spa
1.JavaScript的数值处理对象学习 .txt<br>2.JavaScript的系统函数学习 .txt<br>3.js中用于对象的语句——with和for...in语句学习专题.txt<br>4.smallSoftkey小软键盘,大键盘<br>5.window.open参数详解 .txt<br>6....
<br>本书在全面介绍 ARM 处理器的体系结构、编程模型、指令系统和开发工具的同时,以<br>Samsung 公司的一款基于以太网系统的 ARM 处理器-S3C4510B 为核心,详细讲解系统的<br>设计、调试,以及相关的软件设计和...
超级的列表框,你一定不会失望(137KB)<END><END> 2, axtree.zip 用惯了treeview控件的朋友可以试一试这款axtree控件,它增添了更多的控制(129KB)<END> 3,richedit 利用RichText实现的编辑器,提供了修改字体,打印...
例如,`<if>`、`<choose>`、`<when>`、`<otherwise>`等元素可以根据条件改变SQL结构。 综上所述,理解和掌握Mybatis中的关联查询对于开发高效、灵活的博客系统至关重要。这涉及到数据库设计、SQL编写、Mybatis配置...
软件开发网在此之前给大家介绍过...Glide.with(mContext).load(url).asBitmap().into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> gl
<br> 本软件的主要特点:<br>1、编程语言种类全。包含了目前较为流行的多种语言,如Turboc、VC++6.0、VFP6.0、VB6.0、DELPHI、JAVA、80X86汇编和WIN32汇编。<br>2、具用中文查询功能。用户可根据自己需要输入所需...
<br>本软件集教学制作演示详解于一体,可以说是日常制作FLASH时的工具书,只<br>要打开本软件查一查就可象一部新华字典一样地方便,并且语法讲解清晰,不<br>会产生读不懂的死角,实例内容丰富详尽,每个实例不会太...
本文实例讲述了Android编程简易实现XML解析的方法。分享给大家供大家参考,具体如下: 首先创建在Android工程中创建一个Assets文件夹 app/src/main/assets 在这里添加一个名为 data.xml的文件,然后编辑这个文件,...