在android编码时SparseArray <E>是常用的存储方式之一。
现在简单介绍一下这位:
1.构造方式:
@public SparseArray (int size)=》可以预先设定大小。
@public SparseArray ()=》默认大小为10.
2.存储数据的方式用的是二分方式:
- 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;
- }
存储的键值是从小到大排序的。
3.获取数据的两种方法:
@public void get(int key);
@public void get (int key,E valueIfNotFound); /*没找到就返回第二个参数*/
4.增加键值对的方法:
@public void put(int key,E value);
@public void append(int key,E value);
5.查看第几个位置的键值:
@public int KeyAt(int index);
6.查看某一个键值所在的位置:
@public int indexOfKey(int key); /*没有找到的话返回小于0的值*/
7.查看某个值所在的位置:
@public void indexOfValue(E value); /*没有找到的话返回-1*/
8.删除数据的方法:
@public void delete(int key);
@public void remove(int key);
@public void removeAt(int index);
@public void clear(); /*清除全部*/
9.改数据:
@public void setValueAt(int index,E value);
@public void put(int key,E value); /*如果键值不在时就会变为增加新键值对。修改键值对*/
10.HashMap<Integer, E>说一说:
例如:HashMap<Integer, String> hashMap=
new
HashMap<Integer, String>();
读取数据和SparseArray一样,get(key)/put方法。
遍历数据的例子:
@ hashMap.put(
0
,
"000"
);
1.for
(
int
i =
0
; i < hashMap.size(); i++) {
System.out.println(
"HashMap遍历得到位置"
+i+
"的值为:"
+hashMap.get(i));
}
2.
Set<Integer> set = hashMap.keySet();
for
(Iterator<Integer> iter = set.iterator(); iter.hasNext();) {
Integer keyTemp = iter.next();
String valueTemp = hashMap.get(keyTemp);
System.out.println(
"利用keySet遍历:"
+keyTemp +
"的值是"
+ valueTemp);
}
@ hashMap.put(
“a”
,
"hello"
);
3. Set set = hashMap.keySet();
for(Iterator iterator = set.iterator();iterator.hasNext();)
{
String s1 = (String)iterator.next();
String s2 = (String)hashMap.get(s1);
System.out.println(s1+":"+s2);
}
Set<Map.Entry<String, String>> keyEntrySet = valueMap.entrySet();
for
(Map.Entry<String, String> entry:keyEntrySet)
{
String key = entry.getKey();
Object value = entry.getValue();
}