首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 數據存儲:成對 ID-String 數據用什麼結構?自定義對象 + List 最清晰

     編輯:程式設計綜合問答

解析數據格式:123,"aaaaa"、232,"bbbbb"... 成對出現,需在迴圈中存儲並後續遍歷顯示。本文對比 HashMap、ArrayList、自定義對象 三種方案,推薦自定義實體類 + ArrayList。

方案對比

方案優點缺點適用場景
HashMap<Integer,String>O(1) 按 ID 查找無序、鍵唯一、難攜帶多字段純 ID-值映射、頻繁按 ID 查詢
ArrayList<String[]> 或 Pair簡單語義不清、類型不安全、擴展困難臨時腳本、極簡場景
自定義類 + ArrayList語義清晰、類型安全、易擴展字段、適配 RecyclerView稍多寫幾行代碼絕大多數業務場景

推薦實現:自定義實體類


// 1. 定義實體類
public class DataItem {
    private int id;
    private String content;
    
    public DataItem(int id, String content) {
        this.id = id;
        this.content = content;
    }
    // Getter/Setter...
    public int getId() { return id; }
    public String getContent() { return content; }
    @Override public String toString() { return id + ":" + content; }
}

// 2. 解析存儲
List dataList = new ArrayList<>();
for (/* 解析邏輯 */) {
    int id = ...;      // 解析出的 ID
    String str = ...;  // 解析出的字串
    dataList.add(new DataItem(id, str));
}

// 3. 遍歷顯示
for (DataItem item : dataList) {
    Log.d("DATA", "ID=" + item.getId() + ", Content=" + item.getContent());
    // 直接傳給 Adapter:adapter.setData(dataList);
}

進階:Gson 直接解析 JSON 陣列

若源數據本身是 JSON:


String json = "[[123,\"aaaaa\"],[232,\"bbbbb\"]]"; // 或標準對象陣列
Type type = new TypeToken>(){}.getType();
List list = new Gson().fromJson(json, type);

為什麼不推薦 HashMap?

  • 遍歷順序不穩定(除非用 LinkedHashMap)
  • 後續需增加字段(如時間戳、狀態)時,Map 語義模糊
  • 遞交給 RecyclerView.Adapter 仍需轉為 List

總結

成對 ID-String 數據,定義 DataItem 實體類 + ArrayList<DataItem> 是工程化最佳選擇:語義明確、類型安全、無縫對接 UI 組件、易於擴展。寫幾行 Getter/Setter 換來維護性大幅提升,極其划算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved