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

Java ArrayList> 結構解析:動態數組嵌套 Map 的構建與用途

     編輯:程式設計綜合問答

代碼 ArrayList> 是 Android/Java 開發中極常見的「列表項數據模型」:外層列表對應列表行,內層 Map 對應單行的多字段 (如標題、圖標、副文本)。

代碼逐行解析


// 1. 聲明:動態數組,泛型為 Map
ArrayList> nameDate = new ArrayList<>();

// 2. 循環構建數據 (假設 name、img 為同長度數組)
for (int i = 0; i < name.length; i++) {
    // 3. 創建單行數據 Map
    Map item = new HashMap<>();
    
    // 4. 放入字段:鍵為字符串常量,值為 Object (多態)
    item.put("name", name[i]);      // 如 "張三"
    item.put("img", img[i]);        // 如 R.drawable.icon (int) 或 URL (String)
    
    // 5. 加入列表
    nameDate.add(item);
}

內存結構圖解

nameDate (ArrayList)
├── [0] → HashMap { "name" → "張三", "img" → 2131230723 }
├── [1] → HashMap { "name" → "李四", "img" → 2131230724 }
├── [2] → HashMap { "name" → "王五", "img" → 2131230725 }
└── ...

典型用途:SimpleAdapter 數據源


// 佈局 res/layout/item_simple.xml

    
    


// 適配器綁定
String[] from = {"img", "name"};           // Map 的鍵
int[] to = {R.id.img, R.id.name};          // 佈局控件 ID

SimpleAdapter adapter = new SimpleAdapter(
    this, 
    nameDate,                    // 數據源
    R.layout.item_simple,        // 項目佈局
    from, to                     // 映射關係
);
listView.setAdapter(adapter);

進階:類型安全的實體類替代 (強烈推薦)


// 實體類 (Data Class / Lombok)
@Data @AllArgsConstructor
class ContactItem {
    String name;
    Object img; // int (ResId) 或 String (URL)
    String phone; // 可擴展字段
    boolean isOnline;
}

// 構建列表
List items = new ArrayList<>();
for (int i = 0; i < name.length; i++) {
    items.add(new ContactItem(name[i], img[i], "", false));
}

// RecyclerView + ViewHolder 類型安全綁定
class ContactAdapter extends RecyclerView.Adapter {
    List items;
    // onCreateViewHolder, onBindViewHolder 中直接 item.getName() 無需轉型
}

Map vs 實體類對比

維度Map實體類
類型安全❌ 運行時才發現鍵錯誤/類型轉換異常✅ 編譯期檢查、IDE 提示、重構安全
擴展性✅ 動態增減字段、適配後端動態字段❌ 需修改類定義
序列化✅ JSON 庫原生支援✅ 同樣支援、可控制字段
性能Hash 查找、裝箱/拆箱開銷直接字段訪問、無裝箱、更快
適用場景SimpleAdapter、動態表單、後端 Schema 不固定RecyclerView、業務核心模型、長期維護專案

最佳實踐建議

  1. 新項目首選實體類 + RecyclerView:類型安全、可維護、現代標準。
  2. 2. 舊代碼/SimpleAdapter 場景繼承用 Map:但鍵名定義為 public static final String KEY_NAME = "name" 常量,避免字符串硬編碼錯誤。 3. Map 值類型統一:盡量用 String,圖片資源 ID 用 Integer,避免 Object 到處強轉。 4. 構建器模式簡化創建:Map.of("name", name, "img", img) (Java 9+)。

這個結構是「動態數據綁定」的基石:列表 = 項目集合,項目 = 鍵值對集合。理解它是掌握 Android 列表開發的入門鑰匙。

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