猿问

如何从 Hashmap<String, Object> 获取值?

我需要一个可以包含任何类型值的映射。所以我尝试使用HashMap。但是,如果我尝试从映射中获取值,IDE 会提示类型不匹配。


这是我的代码的一部分:


Map<String, Object> state1 = new HashMap<>();

state1.put("location", exit1);

state1.put("direction", direction);

state1.put("number", 0);

Deque<Map> q = new ArrayDeque<>();

q.add(state1);

List<Integer> numbers = new ArrayList<>();


while (!q.isEmpty()) {

    Map<String, Object> state = q.poll();

    Pair location = state.get("location");


变量exit1、Direction已经在这部分之前定义,因此您可以忽略它。另外,您不必关心这部分下面的代码。


我的 IDE 说该行Map<String, Object> state = q.poll();具有不兼容的类型 -需要配对,但找到了对象。我怎样才能使其兼容?


我正在解决一个只能运行一个文件的问题,所以我无法实现一个新类。


至尊宝的传说
浏览 123回答 2
2回答

子衿沉夜

...Pair location = null;if(state.get("location") instanceof Pair){&nbsp; Pair location = (Pair)state.get("location");}else{...}

aluckdog

您可以像这样指定泛型类型:Deque<Map<String,&nbsp;Object>>&nbsp;q&nbsp;=&nbsp;new&nbsp;ArrayDeque<>();
随时随地看视频慕课网APP

相关分类

Java
我要回答