SparseArray <E>

在android编码时SparseArray <E>是常用的存储方式之一。

现在简单介绍一下这位:

1.构造方式:

@public SparseArray (int  size)=》可以预先设定大小。

@public SparseArray ()=》默认大小为10.


2.存储数据的方式用的是二分方式:

  1. private static int binarySearch(int[] a, int start, int len, int key) {  
  2.     int high = start + len;  
  3.     int low = start - 1;  
  4.   
  5.   
  6.     while (high - low > 1) {  
  7.         int guess = (high + low) / 2;  
  8.   
  9.   
  10.         if (a[guess] < key) {  
  11.             low = guess;  
  12.             continue;  
  13.         }  
  14.         high = guess;  
  15.     }  
  16.   
  17.   
  18.     if (high == start + len)  
  19.         return start + len ^ 0xFFFFFFFF;  
  20.     if (a[high] == key) {  
  21.         return high;  
  22.     }  
  23.     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);
        }

4. Set<Map.Entry<String, String>> keyEntrySet = valueMap.entrySet();    

 for(Map.Entry<String, String> entry:keyEntrySet) 

   {

      String key = entry.getKey();

      Object value = entry.getValue();

   }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值