Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android利用SparseArray替換使用HashMap<Integer,E>

Android利用SparseArray替換使用HashMap<Integer,E>

編輯:關於Android編程

MainActivity如下:    
package cc.testsparsearray;  
  
import java.util.HashMap;  
import java.util.Iterator;  
import java.util.Set;  
import android.os.Bundle;  
import android.util.SparseArray;  
import android.app.Activity;  
/** 
 * Demo描述: 
 * SparseArray使用示例 
 * 利用SparseArray替換使用HashMap<Integer,E> 
 * 類似的還有SparseIntArray,SparseBooleanArray,LongSparseArray  
 *  
 * 參考資料: 
 * 1 http://liuzhichao.com/p/832.html 
 * 2 http://blog.csdn.net/xyz_fly/article/details/7931943 
 * 3 http://my.eoe.cn/appadventure/archive/2824.html 
 *   Thank you very much 
 */  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        init();  
    }  
    private void init(){  
          
        SparseArray sparseArray=new SparseArray<String>();  
          
        //增加的兩種方式  
        sparseArray.append(0, "This is 0");  
        sparseArray.append(1, "This is 1");  
        sparseArray.append(2, "This is 2");  
          
        sparseArray.put(3, "This is 3");  
        sparseArray.put(4, "This is 4");  
          
        //遍歷  
        for (int i = 0; i < sparseArray.size(); i++) {  
            System.out.println("遍歷得到位置"+i+"的值為:"+sparseArray.get(i));  
        }  
          
        //查找某個位置的鍵  
        int key =sparseArray.keyAt(1);  
        System.out.println("查找位置1處的鍵 key="+key);  
          
        //查找某個位置的值  
        String value=(String) sparseArray.valueAt(1);  
        System.out.println("查找位置1處的值 value="+value);  
          
        //修改的兩種方式  
        sparseArray.put(0, "This is new 0");  
        sparseArray.put(1, "This is new 1");  
        sparseArray.setValueAt(2, "This is new 2");  
        sparseArray.setValueAt(3, "This is new 3");  
        for (int i = 0; i < sparseArray.size(); i++) {  
            System.out.println("修改後遍歷得到位置"+i+"的值為:"+sparseArray.get(i));  
        }  
          
        //刪除  
        sparseArray.delete(0);  
        System.out.println("刪除操作後sparseArray大小 size="+sparseArray.size());  
        //注意:  
        //在執行刪除後sparseArray的size()減小了1  
        //為了遍歷完,應該將循環條件修改為i < sparseArray.size()+1  
        //HashMap也有類似的情況.參見分割線以下的例子  
        //如果關於SparseArray的遍歷有什麼好的方法或者建議,多謝  
        for (int i = 0; i < sparseArray.size()+1; i++) {  
            System.out.println("刪除後遍歷得到位置"+i+"的值為:"+sparseArray.get(i));  
        }  
          
          
          
          
          
          
         
        System.out.println("//////////////這是分割線////////////////");  
          
          
          
          
          
        HashMap<Integer, String> hashMap=new HashMap<Integer, String>();  
        hashMap.put(0, "000");  
        hashMap.put(1, "111");  
        hashMap.put(2, "222");  
        hashMap.put(3, "333");  
        hashMap.put(4, "444");  
        for (int i = 0; i < hashMap.size(); i++) {  
            System.out.println("HashMap遍歷得到位置"+i+"的值為:"+hashMap.get(i));  
        }  
          
        hashMap.remove(Integer.valueOf(0));  
        System.out.println("刪除操作後hashMap大小 size="+hashMap.size());  
        //注意:  
        //在執行刪除後hashMap的size()減小了1  
        //為了遍歷完,應該將循環條件修改為i < hashMap.size()+1  
        for (int i = 0; i < hashMap.size()+1; i++) {  
            System.out.println("HashMap遍歷得到位置"+i+"的值為:"+hashMap.get(i));  
        }  
          
          
          
        //但是這樣做是意義不大的,我們常用的是利用keySet來遍歷,如下:  
        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);  
        }  
          
    }  
}  

 

    main.xml如下:    
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context=".MainActivity" >  
  
    <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="SparseArray使用示例"  
        android:layout_centerInParent="true" />  
  
</RelativeLayout>  

 

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved