[英]How do I put in the values (of different data types) from two HashMaps with the same keys into a new third HashMap?
[英]put 3 different values from database to Hashmaps
將您的日期和航班號組合成一個字符串。 也許在它們之間包含一個分隔符,以便於人類閱讀和機器解析。
該組合文本是 map 的關鍵。 integer 的負載因子數是您對 map 的值。
Map< String , Integer > map = new HashMap<>() ;
使用JDBC訪問數據庫。 循環傳入的數據庫數據。 對於每個數據庫行,將這兩個字段組合起來,並使用第三個字段輸入 map。
String k = localDate.toString() + "F" + flightNumber ;
Integer v = loadFactor ;
map.put( k , v ) ;
取回。 如果 map 未找到值, getOrDefault
方法將返回默認值。 你說你想要一個 -1 作為默認值。
Integer loadFactor = map.getOrDefault( k , Integer.valueOf( -1 ) ;
或者,您可以創建一個 class 來保存日期和航班號。
Java 16 中的新記錄功能非常適合此功能。 編譯器隱式創建構造函數、getter、 equals
& hashCode
和toString
。 請注意,您可以在使用它的代碼塊中本地定義您的記錄。
對於較舊的 Java,寫入常規的 class 而不是記錄。
record DateFlight ( LocalDate localDate , Integer flightNumber ) {}
將您的 map 定義為:
Map< DateFlight , Integer > map = new HashMap<>() ;
並調用put
:
DateFlight k = new DateFlight( localDate , flightNumber ) ;
Integer v = loadFactor ;
map.put( k , v ) ;
Map
您有多種Map
實現可供選擇,與 Java 捆綁在一起。 第三方也提供實現。
我可能會從HashMap
開始加載數據。 然后使用Map.copyOf
在 ZD52387880E2138177A 和更高版本中使用 Map.copyOf 制作未指定 class 的不可修改的 map。
Map< DateFlight , Integer > dataLoad = new HashMap<>() ;
… load data
Map< DateFlight , Integer > map = Map.copyOf( dataLoad ) ; // Make unmodifiable `Map`.
這是我制作的一張圖表,作為捆綁地圖的指南。
不會強迫您創建一種新的 Object 來存儲行信息的最簡單的解決方案是:
Hashmap 包含鍵值對並將每個唯一鍵映射到一個值。
根據 SQL 數據庫信息,您提供的表具有復合主鍵,換句話說,您的主鍵由兩列(TEXT 類型的日期和 INTEGER 類型的航班號)組成。
如您所知,主鍵具有唯一值,以幫助您在查詢表中的數據時進行區分。 因此,您應該在 hashmap 中存儲表的主鍵作為鍵。
現在,由於您的主鍵由兩列組成,並且它們的值的組合可以幫助您識別唯一性,因此您可以創建一個數組或列表並將日期和 * flightNumber * 存儲在那里。 然后,您將將此數組/列表作為鍵添加到 hashmap 中,並將所需字段的 rest(在我們的示例中為 INTEGER 類型的 loadEstimate)作為其值。
上面的代碼應該是這樣的:
HashMap<ArrayList<Object>, int> myMap = new HashMap<>(); //Create your hashmap
while (rs.next()) {
LocalDate date = LocalDate.parse(rs.getString("Date"));
int flightnumber = Integer.parseInt(rs.getString("FlightNumber"));
int loadestimate = Integer.parseInt(rs.getString("LoadEstimate"));
//Create array resembling the primary key
ArrayList<Object> mapKey = new ArrayList<>();
mapKey.add(date);
mapKey.add(new Integer(flightnumber));
//Store to Map the key and the value
myMap.put(mapKey, loadestimate);
}
//then do sth with the hashmap
請注意,我創建了一個類型為 Object 的通用對象數組,以便能夠存儲不同類型的對象。 這是可能的,因為它們都是 class Object 的子類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.