Android程式設計之SparseArray詳解

2021-09-01 16:33:18 字數 977 閱讀 4139

一、構造

從構造方法我們可以看出,它和一般的list一樣,可以預先設定容器大小,預設的大小是10:

public sparsearray() 

public sparsearray(int initialcapacity)

二、增它有兩個方法可以新增鍵值對:

在儲存資料的時候,是採用了二分法方式,以下是它採用二分法的原始碼:

private static int binarysearch(int a, int start, int len, int key) 

high = guess;

}if (high == start + len)

return start + len ^ 0xffffffff;

if (a[high] == key)

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的開銷。

android程式設計3 socket程式設計之udp傳送

需要實現的功能 採用udp下的socket程式設計,當按下確認鍵,模擬器傳送文字框資料,pc機上的網路除錯助手接收 環境 win7 eclipse sdk package test.soket import com.test button.r class test socket extends ac...

Android網路程式設計之通過Post傳遞引數

a 使用map來儲存引數 mapmap new hashmap map.put name onmoso map.put password onmoso.com b 使用defaulthttpclient建立httpclient例項 c 構建httppost d 將由map儲存的引數轉化為鍵值name...

程式設計之我見

激情不夠,活也不行 部分專注專案,理論不行。或當下的技術棧完全可以勝任工作,拿到可觀的薪水,溫水之中做乙隻安逸的青蛙。學好程式設計必須富有激情,充滿了性趣。理論 沒有理論支撐,實踐只是機械性的死記硬背 實踐 將理論穿插進實踐,將理論都玩明白,姿勢要舒服。經驗 遇到的問題多了,解決的多了,經驗就多了。...