一、构造
从构造方法我们可以看出,它和一般的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...
ADO 的新增内容 <br>ADO 入门 <br>本地数据访问的解决方案 <br>基本的 ADO 编程模型 <br>ADO 编程模型详细资料 <br>使用对象的 ADO 编程模型 <br>ADO 对象模型总结 <br>远程数据访问的解决方案 <br>基本的 RDS 编程...
C/C++语言经典实用趣味程序设计编程百例精解(1) <br>(详解收藏在)http://www.klfd.net.cn/?p=384 <br>1.绘制余弦曲线 <br>2.绘制余弦曲线和直线 <br>3.绘制圆 <br>4.歌星大奖赛 <br>5.求最大数 <br>6.高次方数的尾数...
<br>DFS文件读写<br>网络爬虫之Spider<br>Java正则表达式的总结关键词: Java正则表达式 <br>批量上传--采集 (多个文件夹)<br>The Agile Way<br>hibernate mapping文件中的标记详解:关系标记<br>ANT 安装使用及...
包含<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><br>注册表基础知识 <br>注册表的由来 注册表的数据结构 <br>注册表的编辑 注册表的查找与修改 <br>注册表的内部结构 注册表的分析 <br> <br>注册表--根键详解 <br>HKEY_CLASSES_ROOT根键详解 <br>HKEY_USERS根...
孙卫琴《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过滤器....
其中,`<PAD>`是填充字符,`<ZDLE>`是数据链路控制字符,`<FormatType>`表示包格式类型,`<PacketType2>`表示包类型(ZRQINIT),`<Flags8>`为状态标志,`<CRCCheckBytes4>`为CRC校验码。 ##### 2. 接收初始化响应...
- `<name>`、`<expression>`等用尖括号`<>`包围的词汇表示变量名、表达式等,用于泛指某些内容。 - 示例:`<name>=<expression>`可以表示`x=5`或`name="John"+"Stewman"`。 2. **语句**: - `<statement>`可以是...
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配置...
<name>My Nexus Repository</name> <url>http://nexus.example.com/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ``` 上述配置将所有依赖的下载指向了名为"My Nexus Repository...
软件开发网在此之前给大家介绍过...Glide.with(mContext).load(url).asBitmap().into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> gl
<br>本软件集教学制作演示详解于一体,可以说是日常制作FLASH时的工具书,只<br>要打开本软件查一查就可象一部新华字典一样地方便,并且语法讲解清晰,不<br>会产生读不懂的死角,实例内容丰富详尽,每个实例不会太...
本文实例讲述了Android编程简易实现XML解析的方法。分享给大家供大家参考,具体如下: 首先创建在Android工程中创建一个Assets文件夹 app/src/main/assets 在这里添加一个名为 data.xml的文件,然后编辑这个文件,...
spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.professionals))); spinner.setOnItemSelectedListener(new ...