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

Java List 資料比對與提取:以 od 欄位為鍵的高效實作

     編輯:程式設計綜合問答

資料結構說明

// 單筆 Map
Map map2 = {name="Wang", od=234};

// List
List> map1 = [
    {age=30, od=123},
    {age=31, od=234}
];

目標

找出 map1 中 od == map2.od 的元素(即 {age=31, od=234})並提取。

推薦做法:Stream API(Java 8+)

Integer targetOd = (Integer) map2.get("od");
Map result = map1.stream()
    .filter(m -> targetOd.equals(m.get("od")))
    .findFirst()
    .orElse(null);

if (result != null) {
    // 找到符合項
    System.out.println(result); // {age=31, od=234}
}

傳統迴圈寫法(相容舊版)

Map found = null;
for (Map m : map1) {
    if (targetOd.equals(m.get("od"))) {
        found = m;
        break;
    }
}

效能優化:大量資料時建立索引

// 將 map1 轉為 Map,O(1) 查找
Map> index = new HashMap<>();
for (Map m : map1) {
    index.put((Integer) m.get("od"), m);
}
Map result = index.get(targetOd);

注意事項

  • 使用 equals 而非 == 比較包裝型別(Integer)。
  • 確認 od 鍵存在且非 null,避免 NullPointerException。
  • 若有多筆相同 od,Stream findFirst 只取第一筆;需全部請用 collect(Collectors.toList())。

總結

針對 List 依特定鍵值比對,Java 8 Stream API 寫法簡潔且可讀;資料量大時建立 HashMap 索引可大幅提升查詢效能。

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