有没有办法将java.util.map(HashMap)转换为HazelCast IMap?
Map<String, User> map = ....;
IMap<String, User> imap;
由于
答案 0 :(得分:2)
迈赫达德,
Hazelcast IMap
实现Map
和ConcurrentMap
接口。
在以下情况中,对象map2
和map
将指向同一个分布式对象(更多,map2
和map
将指向同一代理对象。
Map<Object, Object> map2 = hazelcastInstance.getMap("test");
IMap<Object, Object> map = hazelcastInstance.getMap("test");
使用Map
界面,您可以使用&#34;标准&#34;方法。 IMap
提供了诸如提交EntryProcessors,添加事件侦听器等扩展。
我希望它确实有意义。 如果您有任何问题,请告诉我。
谢谢
答案 1 :(得分:1)
我知道它已经过时但这是我的解决方案:
为项目添加额外的依赖项:
<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);
答案 2 :(得分:1)
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() );
}
p.s。请不要这样写,请使用当时提供的/安排行为断言