【发布时间】:2020-09-29 01:12:08
【问题描述】:
请帮助我学习在地图之间导航。我有一个 Map
sourceHashMapFind=.put("AAA", Arrays.asList(-5.6, 7.9, 5.7, 6.3));
sourceHashMapFind=.put("BBB", Arrays.asList(0.6, 5.8, 6.9, 8.0));
sourceHashMapFind=.put("CCC", Arrays.asList(0.5, 5.6, 6.9, 8.0));
我想生成另一个 ==> HashMap
这是我的标准。如果 0 位置的绝对值大于 1。 --> 则将 Key 和 Value 保存到新的 queryPositions hashmap 中。提前谢谢!
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class NewClass {
public static void main(String[] args) {
Map<String, List<Double>> sourceHashMapFind = new HashMap<>();
sourceHashMapFind.put("AAA", Arrays.asList(-5.6, 7.9, 5.7, 6.3));
sourceHashMapFind.put("BBB", Arrays.asList(0.6, 5.8, 6.9, 8.0));
sourceHashMapFind.put("CCC", Arrays.asList(0.5, 5.6, 6.9, 8.0));
HashMap<String, Double> queryPositions = sourceHashMapFind.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.filter(entry -> Math.abs(entry.getValue().get(0)) > 1.0)
.distinct()
.collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));
}
}
这是运行输出
run:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types: inference variable R has incompatible bounds
equality constraints: java.util.Map<K,U>
upper bounds: java.util.HashMap<java.lang.String,java.lang.Double>,java.lang.Object
at P2020_0928_stackOverflow_MyQuestion.NewClass.main(NewClass.java:21)
C:\Users\User1\AppData\Local\NetBeans\Cache\9.0\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\User1\AppData\Local\NetBeans\Cache\9.0\executor-snippets\run.xml:94: Java returned: 1
BUILD FAILED (total time: 1 second)
请查看消息。谢谢你们! https://i.stack.imgur.com/iaK7j.jpg
【问题讨论】:
-
您的预期输出是什么?您拥有的代码的输出是什么?
-
嗨,也许使用
entry.getValue().get(0)作为toMap函数的值部分。 -
@Sweeper:预期的输出应该是存储字符串“AAA”和保存到 HashMap
查询位置的双精度值 -5.6。因为 (-5.6) 的绝对值大于 1.0。 -
@IronMan:尝试了这个建议,它不起作用。这是到目前为止的输出。谢谢你们。
-
最终地图的价值应该是多少?列表的第一个值?它的绝对值?列表中所有值的总和?请澄清
标签: java java-8 hashmap java-stream key-value