我有这个变量:
b
我有第一个(整数)和第三个元素(Character),我想用函数得到第二个整数。我该怎么办? 我知道如何从普通的Hashmap变量中获取值,但我不知道如何使用嵌套的hashmap ...
我已经尝试过这个:
Observable<String> cache = Observable.timer(2, TimeUnit.SECONDS)
.map(new Function<Long, String>() {
public String apply(Long t) throws Exception {
System.out.println("Invoking cached");
return "cached";
}
});
Observable<String> original = Observable.timer(5, TimeUnit.SECONDS)
.map(new Function<Long, String>() {
public String apply(Long t) throws Exception {
System.out.println("Invoking original");
return "originalBackend";
}
});
Observable<String> originalOnce = original.cache();
Observable<String> result = cache.takeUntil(originalOnce).mergeWith(originalOnce);
result.subscribe(new Consumer<String>() {
public void accept(String result) throws Exception {
System.out.println(result);
}
});
我想打印7但这个打印件给我null。
更新:解决此问题的最佳方法是更改结构。 HashMap不是为了从值获取索引而设计的。但是,有一种方法(见下文)。
答案 0 :(得分:1)
HashMap
并非旨在通过值获取密钥,而这正是您尝试使用.get(c)
进行的操作。它旨在获取给定键的值。
如果您想要有效查找,可能应该更改数据结构。
否则,您将不得不迭代内部Map
的条目以找到具有所请求值的密钥(可能有多个此类密钥)。
例如:
HashMap<Integer,Character> inner = map.get(0);
Integer key = null;
if (inner != null) {
for (Map.Entry<Integer,Character> entry : inner.entrySet()) {
if (entry.getValue().equals('c')) {
key = entry.getKey();
break;
}
}
}