有没有办法将 java.util.map(HashMap) 转换为 HazelCast IMap ?
Map<String, User> map = ....;
IMap<String, User> imap;
谢谢
有没有办法将 java.util.map(HashMap) 转换为 HazelCast IMap ?
Map<String, User> map = ....;
IMap<String, User> imap;
谢谢
引用 Hazelcast 官方文档:
假设您想测试两个成员是否具有相同的地图大小。
@Test
public void testTwoMemberMapSizes() {
// start the first member
HazelcastInstance h1 = Hazelcast.newHazelcastInstance();
// get the map and put 1000 entries
Map map1 = h1.getMap( "testmap" );
for ( int i = 0; i < 1000; i++ ) {
map1.put( i, "value" + i );
}
// check the map size
assertEquals( 1000, map1.size() );
// start the second member
HazelcastInstance h2 = Hazelcast.newHazelcastInstance();
// get the same map from the second member
Map map2 = h2.getMap( "testmap" );
// check the size of map2
assertEquals( 1000, map2.size() );
// check the size of map1 again
assertEquals( 1000, map1.size() );
}
ps请不要这样写,使用给定的时候/安排行为断言
迈赫达,
HazelcastIMap
实现Map
和ConcurrentMap
接口。在以下情况下,对象map2
和map
将指向同一个分布式对象(甚至更多,map2
并且map
将指向同一个代理对象)。
Map<Object, Object> map2 = hazelcastInstance.getMap("test");
IMap<Object, Object> map = hazelcastInstance.getMap("test");
使用Map
接口,您会受到“标准”方法的限制。IMap
提供诸如提交 EntryProcessors、添加事件监听器等扩展。
我希望它确实有意义。如果您有任何问题,请告诉我。
谢谢
我知道它很旧,但这是我的解决方案:
向项目添加额外的依赖项:
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<classifier>tests</classifier>
<version>${hazelcast.version}</version>
<scope>test</scope>
</dependency>
在您的单元测试中,您将拥有以下字段:
@Mock
private HazelcastInstance hazelcastInstance;
private TestHazelcastInstanceFactory hazelcastFactory = new TestHazelcastInstanceFactory();
最后,在您的测试中(假设您使用的是 Mockito):
// mock the hazelcast map
IMap<Object, Object> mockedMap = hazelcastFactory.newHazelcastInstance().getMap("doesntmatter");
mockedMap.put("some-key", someObject);
when(hazelcastInstance.getMap("testMap")).thenReturn(mockedMap);