Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Nashorn JavaScript中从Java映射中删除元素_Javascript_Java_Java 8_Nashorn - Fatal编程技术网

如何从Nashorn JavaScript中从Java映射中删除元素

如何从Nashorn JavaScript中从Java映射中删除元素,javascript,java,java-8,nashorn,Javascript,Java,Java 8,Nashorn,我有一个Java HashMap,我已经将它传递给脚本引擎。我想在处理条目时删除它们,因为我稍后会报告无效的密钥。删除条目的常见方法(删除testMap['key'];)显然没有效果 我怎样才能通过这次考试 @Test public void mapDelete() throws ScriptException{ Map<String,String> map = new HashMap<>(1); map.put("key","value");

我有一个Java HashMap,我已经将它传递给脚本引擎。我想在处理条目时删除它们,因为我稍后会报告无效的密钥。删除条目的常见方法(
删除testMap['key'];
)显然没有效果

我怎样才能通过这次考试

@Test
public void mapDelete() throws ScriptException{
    Map<String,String> map = new HashMap<>(1);
    map.put("key","value");

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
    engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put ("testMap", map);
    engine.eval("delete testMap['key'];");
    Assert.assertEquals (0, map.size());
}
@测试
public void mapDelete()引发脚本异常{
Map Map=newhashmap(1);
地图放置(“键”、“值”);
ScriptEngine=new ScriptEngineManager().getEngineByName(“JavaScript”);
engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put(“testMap”,map);
eval(“删除testMap['key'];”;
Assert.assertEquals(0,map.size());
}

如果您知道您有一个
HashMap
,您可以在
Nashorn
中使用它,即:

@Test
public void mapDelete() throws ScriptException {
    Map<String,String> map = new HashMap<>(1);
    map.put("key","value");

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
    engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put ("testMap", map);
    engine.eval("testMap.remove('key');");
    Assert.assertEquals (0, map.size());
}
@测试
public void mapDelete()引发脚本异常{
Map Map=newhashmap(1);
地图放置(“键”、“值”);
ScriptEngine=new ScriptEngineManager().getEngineByName(“JavaScript”);
engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put(“testMap”,map);
engine.eval(“testMap.remove('key');”;
Assert.assertEquals(0,map.size());
}

完美!非常感谢。