您好,目前我尝试查看列表是否包含元素。当前,列表包含一个对象,该对象包含另一个应检查的对象。
这些是两个 List 包含的类:
case class SourceFile(name: String, path: String, date_changed: java.util.Date)
case class DBSourceFile(id: UUID, file: SourceFile)
所以我有两个列表 list1:List[SourceFile]
和 list2:List[DBSourceFile]
目前我做了一个 foreach 循环来访问 list1 中的 SourceFile:
for(file <- files)
目前我用计数检查它,但我认为包含会更好,但我不能做这样的事情:
dbFiles.count(dbFile => dbFile.file.name == diskFile.name && dbFile.file.path == diskFile.path)
当我使用包含
首选方法是什么?
这就是我目前的做法:
def checkExistingFilesInDB() {
for(diskFile <- diskFiles) {
val dbFile = dbFiles.filter(dbFile => dbFile.file.name == diskFile.name && dbFile.file.path == diskFile.path)
if(dbFile.length == 1) {
//println(dbFile(0))
if(!(diskFile == dbFile(0).file)) {
Logger.info("File updated: " + dbFile(0) + " \nwith: " + diskFile)
SourceFile.update(DBSourceFile(dbFile(0).id, diskFile))
}
}
else if (dbFile.length == 0) {
SourceFile.createSourceFile(diskFile)
Logger.info("File inserted into Database: " + diskFile)
}
else {
// TODO: What happens if more than 1 reference of the file is in the database
Logger.error("File exists two times on the database")
}
}
}