- Getting Started with Hazelcast
- Mat Johns
- 281字
- 2021-08-06 16:56:52
Many things at a time
We have seen previously that Hazelcast provides us with a generic key/value map; however, one popular use of this capability would be to create a key/list-of-values map. While there is nothing stopping us from defining these ourselves using standard Java generics, we will have to manually handle the initialization of each key entry. Hazelcast has luckily gone out of its way to make our lives easier by handling this case for us, through the use of the specialized MultiMap
collection.
Let's have a look at the following example:
Map<String, List<String>> manualCities = hz.getMap("manualCities"); List<String> gbCities = new ArrayList<String>(); manualCities.put("GB", gbCities); gbCities = manualCities.get("GB"); gbCities.add("London"); manualCities.put("GB", gbCities); gbCities = manualCities.get("GB"); gbCities.add("Southampton"); manualCities.put("GB", gbCities); List<String> frCities = new ArrayList<String>(); manualCities.put("FR", frCities); frCities = manualCities.get("FR"); manualCities.get("FR").add("Paris"); manualCities.put("FR", frCities); System.err.println( String.format("Manual: GB=%s, FR=%s", manualCities.get("GB"), manualCities.get("FR"))); MultiMap<String, String> multiMapCities = hz.getMultiMap("multiMapCities"); multiMapCities.put("GB", "London"); multiMapCities.put("GB", "Southampton"); multiMapCities.put("FR", "Paris"); System.err.println( String.format("MultiMap: GB=%s, FR=%s", multiMapCities.get("GB"), multiMapCities.get("FR")));
As we can clearly see, the use of MultiMap
in this way dramatically simplifies the code as well as allowing you to modify the underlying map using delta changes rather than having to fully retrieve, modify, and persist for what could be a small change in a large list. One important point to be aware of is that we can't use a Hazelcast map in a pass-by-reference context, as we might do with a native Java implementation. For example, the following optimization of the previous code would not achieve the desired result:
manualCities.get("GB").put("Leeds");
This is because Hazelcast always returns a cloned copy of the data rather than the instance actually held; so modifying the returned object as we would in the preceding code does not actually update the persisted value.
- Cocos2D-X權(quán)威指南(第2版)
- Visual Basic 6.0程序設(shè)計計算機(jī)組裝與維修
- 深入實(shí)踐Spring Boot
- 深入淺出DPDK
- Java軟件開發(fā)基礎(chǔ)
- Unity Shader入門精要
- 精通網(wǎng)絡(luò)視頻核心開發(fā)技術(shù)
- HTML5+CSS3網(wǎng)站設(shè)計基礎(chǔ)教程
- iOS編程基礎(chǔ):Swift、Xcode和Cocoa入門指南
- JavaScript入門經(jīng)典
- C語言程序設(shè)計
- 領(lǐng)域驅(qū)動設(shè)計:軟件核心復(fù)雜性應(yīng)對之道(修訂版)
- PLC應(yīng)用技術(shù)(三菱FX2N系列)
- 創(chuàng)意UI:Photoshop玩轉(zhuǎn)APP設(shè)計
- 新印象:解構(gòu)UI界面設(shè)計