日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java stream 多个filter_如何在Java Stream上应用多个过滤器?

發布時間:2024/7/19 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java stream 多个filter_如何在Java Stream上应用多个过滤器? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我必須通過一個映射過濾一個對象集合,該映射包含對象字段名稱和字段值的鍵值對。我試圖通過stream()。filter()應用所有過濾器。

對象實際上是JSON,因此Map保留了其變量的名稱以及它們必須包含的值才能被接受,但是出于簡單性的原因,并且由于它與問題無關,因此我編寫了一個簡單的Testclass來模擬行為:

public class TestObject {

private int property1;

private int property2;

private int property3;

public TestObject(int property1, int property2, int property3) {

this.property1 = property1;

this.property2 = property2;

this.property3 = property3;

}

public int getProperty(int key) {

switch(key) {

case 1: return property1;

case 2: return property2;

default: return property3;

}

}

}

到目前為止我嘗試過的是:

public static void main(String[] args) {

List list = new ArrayList<>();

Map filterMap = new HashMap<>();

list.add(new TestObject(1, 2, 3));

list.add(new TestObject(1, 2, 4));

list.add(new TestObject(1, 4, 3));

filterMap.put(3, 3); //Filter property3 == 3

filterMap.put(2, 2); //Filter property2 == 2

//Does not apply the result

filterMap.forEach((key, value) -> list.stream()

.filter(testObject -> testObject.getProperty(key) == value)

.collect(Collectors.toList())

);

/* Gives error: boolean can not be converted to void

list = list.stream()

.filter(testObject -> filterMap.forEach((key, value) -> testObject.getProperty(key) == value))

.collect(Collectors.toList()

);

*/

//Printing result

list.forEach(obj -> System.out.println(obj.getProperty(1) + " " + obj.getProperty(2) + " " + obj.getProperty(3)));

}

我嘗試將Map的forEach放在首位,并將Collection的流放在首位,但是兩種解決方案均無法按預期工作。此示例的期望輸出將僅是打印值為property1

= 1,property2 = 2和property3 = 3的對象。

我如何正確地應用所有過濾器,就像您在代碼中使用固定數量的過濾器一個接一個地放置它們一樣?

使用已知數量的過濾器:

list.stream().filter(...).filter(...)

編輯:

Sweeper在回答中很好地總結了我的問題,因此在這里再次為了澄清(可能是將來的讀者):我想保留所有滿足所有過濾條件的對象。

總結

以上是生活随笔為你收集整理的java stream 多个filter_如何在Java Stream上应用多个过滤器?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。