java - 无法使用 Lambda Stream Filter 获得响应

标签 java filter java-stream

这是我遇到问题的流“airportFilteredList”,它应该打印与给定“Turkey”字符串的过滤器匹配的国家/地区名称,但它不会在控制台上使用 count() 打印任何内容流给出的值为 0

public void getFilteredAirportList(String filteredText){

     System.out.println(filteredText); //returns Turkey    
     Predicate<Airport> filterCountry = u -> u.getCountry() == filteredText;
     Stream<Airport> airportFilteredList = airportList.stream().filter(filterCountry);
     airportFilteredList.forEach(u -> System.out.println(u.getCountry()));

}

我也从同一个列表中创建了一个没有过滤器的通用流,但它运行良好并返回机场的所有国家/地区名称。

public void getAirportList(){
    Stream <Airport> airportStream = airportList.stream();
    airportStream.forEach(u -> u.getCountry()); //returns Turkey
}

从中检索 Airport 对象的 ArrayList

ArrayList<Airport> airportList = new ArrayList<Airport>();

public void createAirport(String airport, String country, String continent,
        String airfield_length) {
    airportList.add(new Airport(airport, country, continent,
            airfield_length));

}

完整的源代码位于 https://github.com/Jointts/JavaExam/tree/master/JavaExam

最佳答案

在java中使用equals而不是==来比较String,因为==比较引用而不是值。

 Stream<Airport> airportFilteredList = airportList.stream().filter(
            u -> "Turkey".equals(u.getCountry()));

关于java - 无法使用 Lambda Stream Filter 获得响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423916/

相关文章:

java - 我应该如何使用 USB 调试来调试图像捕获 Intent

具有多个聚合的 Java 8 流分组依据

javascript - 测试 Vue.js 过滤器

CSS 有选择地模糊元素

android - 使用 ArrayAdapter 在自定义 listView 中过滤文本和图像

Java 8 Stream,得到头和尾

java - random.longs(ARRAY_SIZE, 0, 100000) 返回长流,我想将此流转换为长数组。怎样才能做到呢?

java - GWT 的 http 请求生成器返回空响应

java - java中如何将字符串转换为RegularTimePeriod?

java - 以编程方式为 jarsigner 创建 keystore