Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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
Java 8 lambda基于应用于映射对象的筛选器返回映射键的空列表_Java_Spring_List_Lambda_Java 8 - Fatal编程技术网

Java 8 lambda基于应用于映射对象的筛选器返回映射键的空列表

Java 8 lambda基于应用于映射对象的筛选器返回映射键的空列表,java,spring,list,lambda,java-8,Java,Spring,List,Lambda,Java 8,我目前正在使用Java8Lambda,但有一个小问题 我想做什么 我使用spring构建了一个原型网站,它接收一个事务对象并将其存储在地图中。事务类具有长值和字符串类型,例如hotel。 我要做的是,运行一个lambda表达式,过滤掉所有具有特定类型的事务对象,并返回一个列表,该列表是它们的键列表 基本上,我只想看到地图中具有特定类型的对象的键列表 简单测试 我通过填充一个具有汽车类型且值为3000的对象来测试它。然后,我在web表单上传入car,以基于此筛选地图。我输出了输入类型以检查webf

我目前正在使用Java8Lambda,但有一个小问题

我想做什么

我使用spring构建了一个原型网站,它接收一个事务对象并将其存储在地图中。事务类具有长值和字符串类型,例如hotel。 我要做的是,运行一个lambda表达式,过滤掉所有具有特定类型的事务对象,并返回一个列表,该列表是它们的键列表

基本上,我只想看到地图中具有特定类型的对象的键列表

简单测试 我通过填充一个具有汽车类型且值为3000的对象来测试它。然后,我在web表单上传入car,以基于此筛选地图。我输出了输入类型以检查webform是否正确接收它,Map object中存储的类型,以及它们是否相等,这都是正确的,但是lambda仍然返回一个空列表

我的代码编写如下:

冒犯方法:


我认为字符串的相等性检查失败:


使用equals而不是==。

这是你的错误:s.getValue.getType==这是打字错误吗?我非常尴尬。非常感谢,在花了几个小时查看lambda文档,认为这是我知识的一个问题之后,我后悔自己没有发现这一点。再次,非常感谢。如上所述,这让我非常尴尬。非常感谢您发现这一点并花时间回答。最好的情况是:
    HashMap<Long, Transaction> transactionMap = new HashMap<>();

@RequestMapping(value = "transactionservice/types/{type}", method=RequestMethod.GET)
public ResponseEntity<List<Long>> getSameType(@PathVariable String type) {

    System.out.println("Input type is: " + type);
    System.out.println("What is stored at 1: " + transactionMap.get(Integer.toUnsignedLong(1)).getType());
    System.out.println("Values are equal: " + type.equals(transactionMap.get(Integer.toUnsignedLong(1)).getType()));

    List<Long> listSameType = transactionMap.entrySet()
            .stream()
            .filter(s -> s.getValue().getType() == type)
            .map(Map.Entry::getKey)
            .collect(Collectors.toList());
    System.out.println("List size of keys: " + listSameType.size());

    return new ResponseEntity<List<Long>>(listSameType, HttpStatus.OK);
}
Input type is: car
What is stored at 1: car
Values are equal: true
List size of keys: 0
List<Long> listSameType = transactionMap.entrySet()
        .stream()
        .filter(s -> s.getValue().getType().equals(type))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());