当前位置: 首页 > 知识库问答 >
问题:

错误:不兼容的类型:推理变量R的边界不兼容(Lambda java 8)

袁青青
2023-03-14

我有一个树对象,它包含树对象的子对象(HashMap),等等
我需要按numericPosition变量筛选对象

例如:

Tree mapTreeRoot = new Tree("Root",0);      
int answer = 111;

mapTreeRoot
    .addNode("ChilldOfRoot",111)
    .addNode("ChildOfRootExample1",222)
    .addNode("ChildOfRootExample1Example2",333);

Tree treeObj  = mapTreeRoot
        .children
        .entrySet().stream()
        .filter(map -> answer == map.getValue().numericPosition)
        .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));

在这种情况下,我应该得到一个树对象过滤的数字位置
树类

   public Tree(String name,int numericPosition) {
        this.name = name;
        this.numericPosition = numericPosition;
    }

    public Tree addNode(String key,int numericPosition) {
        Object hasKey =  children.get(key);
        if(hasKey == null) {
             children.put(key,new Tree(key,numericPosition)); 
        }

        return children.get(key);
    }

    public Tree getNode(String key) {
         Object hasKey =  children.get(key);
         if(hasKey != null) {
            return children.get(key);
        }
        return this;
    }

以防
我得到这个错误:错误:不兼容类型:推断变量R具有不兼容的边界

我一直在遵循这个例子,但它对我不起作用。https://www.mkyong.com/java8/java-8-filter-a-map-examples/

我也试过HashMap


共有1个答案

松和璧
2023-03-14

如果要筛选一棵树,可以使用:

Tree treeObj = null;
Optional<Entry<String, Tree>> optional  = mapTreeRoot
        .children
        .entrySet().stream()
        .filter(map -> answer == map.getValue().numericPosition)
        .findAny();
if(optional.isPresent()){
    treeObj = optional.get().getValue();
}
 类似资料: