[英]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.