将Java Map转换为IMap

时间:2016-10-25 21:03:43

标签: hazelcast hazelcast-imap

有没有办法将java.util.map(HashMap)转换为HazelCast IMap?

Map<String, User> map = ....;
IMap<String, User> imap;

由于

3 个答案:

答案 0 :(得分:2)

迈赫达德,

Hazelcast IMap实现MapConcurrentMap接口。 在以下情况中,对象map2map将指向同一个分布式对象(更多,map2map将指向同一代理对象。

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。请不要这样写,请使用当时提供的/安排行为断言