Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
获取HashMap的最小键和整数<;T1,设置<;T2>&燃气轮机;使用Java8方式_Java_Java 8 - Fatal编程技术网

获取HashMap的最小键和整数<;T1,设置<;T2>&燃气轮机;使用Java8方式

获取HashMap的最小键和整数<;T1,设置<;T2>&燃气轮机;使用Java8方式,java,java-8,Java,Java 8,我知道如何从HashMap获取最小键和元素: 为什么不分两步进行: 在所有集合中查找最小值 查找包含具有此值的集合的任何映射项 因为可能没有这样的值,所以应该使用Optional作为返回类型。 您应该在参数类型中使用通配符,以提供更灵活的API: public static<T1, T2> Optional<Map.Entry<T1, Set<T2>>> getMinimumKeyAndElement(Map<? extends T1,? e

我知道如何从
HashMap
获取最小键和元素:


为什么不分两步进行:

  • 在所有集合中查找最小值
  • 查找包含具有此值的集合的任何映射项
  • 因为可能没有这样的值,所以应该使用Optional作为返回类型。 您应该在参数类型中使用通配符,以提供更灵活的API:

    public static<T1, T2> Optional<Map.Entry<T1, Set<T2>>> getMinimumKeyAndElement(Map<? extends T1,? extends Set<? extends T2>> mapOfSet){
       T2 minValue = mapOfSet.values().stream().flatMap(Set::stream).min(comparator_for T2);
       return mapOfSet.entrySet().stream().filter(s->s.getValue().contains(minValue)).findFirst();
    }
    

    public static可选getMinimumKeyAndElement(地图)您的问题不清楚。请重新阅读并改进。
    
    /**
     * return minimum value of {getValue(elem)}_{elem is T2 values in all values of mapOfSet} 
     *   and key of type T1 whose value (Set<T2) contains the minimum value 
     */
    public static<T1, T2> Map.Entry<T1, T2> getMinimumKeyAndElement(HashMap<T1, Set<T2>> mapOfSet){
        ???
    }
    
    public static<T1, T2> Optional<Map.Entry<T1, Set<T2>>> getMinimumKeyAndElement(Map<? extends T1,? extends Set<? extends T2>> mapOfSet){
       T2 minValue = mapOfSet.values().stream().flatMap(Set::stream).min(comparator_for T2);
       return mapOfSet.entrySet().stream().filter(s->s.getValue().contains(minValue)).findFirst();
    }