gpt4 book ai didi

java - 如何从 Hashtable> h 获取值

转载 作者:行者123 更新时间:2023-12-02 09:23:03 26 4
gpt4 key购买 nike

如何获取给定外部哈希表键的内部HashTable的整数值

HashMap<Integer, String[]> map;

Hashtable<Integer,Hashtable<String,Integer>> h =
new Hashtable<Integer,Hashtable<String,Integer>>();

for(int z = 0;z<Integer.MAX_VALUE;z++) {
String temp4 = map.get(k)[j];
h.put(z, new Hashtable(){{put(temp4,j);}});
}

最佳答案

第一个解决方案是最简单的,但它需要默认的中间值。

Hashtable<Integer, Hashtable<String, Integer>> h = new Hashtable<>();
h.put(1, new Hashtable<String, Integer>() {{put("firstKey", 3);}});

Integer intValue = h.getOrDefault(1, new Hashtable<>()).getOrDefault("firstKey", null);
System.out.println(intValue);

基于流的解决方案:

Optional<Integer> firstValue = h.entrySet().stream()
.filter(e -> e.getKey().equals(1))
.flatMap(e -> e.getValue().entrySet().stream())
.filter(e -> e.getKey().equals("firstKey"))
.map(e -> e.getValue())
.findFirst();

firstValue.ifPresent(System.out::println);

可以通过Optional引入辅助方法。

private static <K,T> Optional<T> from(Map<K, T>  from, K key) {
return (from.containsKey(key)) ? Optional.of(from.get(key)) : Optional.empty();
}

然后它看起来更具可读性:

from(h, 1)
.flatMap(x -> from(x, "firstKey"))
.ifPresent(System.out::println);

或者在之前的基础上添加另一种方法:

private static <K, T> Function<Map<K, T>, Optional<T>> forKey(K key) {
return (Map<K, T> from) -> from(from, key);
}

然后可以写成:

Optional.of(h)
.flatMap(forKey(1))
.flatMap(forKey("firstKey"))
.ifPresent(System.out::println);

关于java - 如何从 Hashtable<Integer,Hashtable<String,Integer>> h 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58534777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com