簡體   English   中英

如何過濾列表 object 使用 stream map 過濾器 Z93F725A07423FE1C886F448B33Z2

[英]how to filter list object by using stream map filter in java

我想過濾 java 中的學生列表。 我在 kotlin 有一個學生 class 像這樣。

class Student(
    var id: String? = null,
    var firstName: String? = null,
    var lastName: String? = null
) {

    constructor(entity: StudentCourse?): this() {
        if (entity != null) {
            this.id = entity.id.id
            this.name = entity.name
        }
    }
}

class StudentCourse (@EmbeddedId open var id: StudentCourseId)  {
   
    constructor() : this(StudentCourseId())

    open var name: Boolean? = null
}

@Embeddable
open class StudentCourseId: Serializable {

    open var id: String? = null

    open var deptName: String? = null
}

這是我要過濾的列表:

var students: List<Student> = listOf(
   Student("14adbv45", "dan", "GEG"),
   Student("96adbv42","Bob", "Bowyer"),
   Student("30adbv45","Emily", "Eden")
 )

我這樣做

 List<students> studentListContainsFirstNameBob = students.stream()
                        .map(StudentCourse)
                        .filter(e -> e.getFirstName.equals("Bob"))
                        .flatMap(List::stream);

但它不起作用。

請問我該怎么做

您的代碼中有多個問題。 例如在這部分:

 constructor(entity: StudentCourse?): this() {
        if (entity != null) {
            this.id = entity.id.id
            this.name = entity.name
        }
    }

entity.name指的是StudentCourse#name ,但該屬性實際上是Boolean類型,因此將其與String進行比較確實沒有多大意義。 您還將.id加倍,這是不正確的。

接下來,我不確定這個剪輯應該做什么,是否打算將學生與給定課程聯系起來? 如果是這樣,您可能希望將學生列表添加到課程中,或者將課程列表添加到學生(聽起來更正確)。

最后,在過濾列表時,您可以通過以下方式獲取名字為 Bob 的學生:

var studentListContainsFirstNameBob: List<Student> = students
        .filter { it.firstName.equals("Bob") }
        .toList()

注意it變量是指列表中的元素,它也可以寫成:

var studentListContainsFirstNameBob: List<Student> = students
        .filter { student -> student.firstName.equals("Bob") }
        .toList()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM