Android開發(fā)之那些好用的數(shù)據(jù)結構與API

由于Android Application 主要是Java語言開發(fā)的,所以在寫程序的時候,很多朋友們都會用到Java里面常用的數(shù)據(jù)結構,但是Android中提供了更加適合這個平臺、好用的數(shù)據(jù)結構和API,下面來介紹一些常用的但并不是人人都知道的知識。

一、數(shù)據(jù)結構篇

1.SparseArray —— 替代HashMap,主要有以下幾種

  • SparseLongArray
  • SparseIntArray
  • SparseBooleanArray
  • SparseArray

SparseArray比HashMap更省內存,它對數(shù)據(jù)采取了壓縮的方式來表示稀疏數(shù)組的數(shù)據(jù),從而節(jié)約內存空間,SparseArray只能存儲key為int類型的數(shù)據(jù),同時,SparseArray在存儲和讀取數(shù)據(jù)時候,使用的是二分查找法

//創(chuàng)建一個存儲String值得SparseArray
SparseArray<String> sparseArray = new SparseArray<String>();
        
//存儲 注意key是int類型
sparseArray.put(1, "zhangsan");
sparseArray.put(2, "123456");

//通過int類型的key獲取value
sparseArray.get(1);
//第二個參數(shù)是默認值
sparseArray.put(2, "000000");

//獲取索引處的key與value
sparseArray.keyAt(1);
sparseArray.valueAt(1);

2.ArrayMap 和 SimpleArrayMap —— 替代HashMap
其中,ArrayMap 是 Map的子類,而SimpleArrayMap 不是。

//創(chuàng)建一個ArrayMap key和value都是String類型 可以是任意類型
ArrayMap<String, String> arrayMap = new ArrayMap<>();

//存
arrayMap.put("username", "zhangsan");
arrayMap.put("password", "123456");
        
//取
arrayMap.get("username");
arrayMap.get("password");

總結說明:
(1)如果key的類型是int、long或者boolean類型,那么使用SparseArray,因為它避免了自動裝箱的過程;
(2)如果key類型為其它的類型,則使用ArrayMap;
(3)兩個數(shù)據(jù)結構都適合數(shù)據(jù)量不是特別大的情況。

二、API篇

1.View.isShown() 判斷視圖是否顯示,不需要再根據(jù) View.getVisibility() == View.VISIBLE來判斷是否顯示或者隱藏,但是注意
(1)View.getVisibility() == View.VISIBLE 只是對View自身的可見性進行判斷;
(2)View.isShown() 只有它及其所有的祖先都為visible時,才返回true。

2.TextUtils.isEmpty(CharSequence)方法,用于判斷字符串是否為null或"",以后再也不要寫 if(str != null && !str.equals(""))

3.TextWatcher接口,用來監(jiān)聽文本輸入框內容的改變,這個應該相對知道的人多一點,因為經(jīng)常會有這樣的需求,基本結構如下:

TextWatcher mTextWatcher = new TextWatcher() {

            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        };

4.TextView.setError(); 這個一般用于EditText中,驗證用戶輸入,然后給予提示,這樣就不需要使用Toast或者Dialog來提示了。

setError.PNG

5.onBackPressed(); 調用此句,相當于點了一次返回按鈕。

6.runOnUiThread可以直接運行到主線程中,一般在子線程中使用,如下:

new Thread(new Runnable() {
            @Override
            public void run() {
                //執(zhí)行耗時操作
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //操作主線程的UI
                    }
                });

            }
        }).start();

其實Android 還有很多好用的API,但是并不是人人都知道,歡迎大家繼續(xù)補充和投稿~~~
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容