当前位置: 首页 > 知识库问答 >
问题:

如何从包含特定id的列表中返回单个对象?

章乐逸
2023-03-14

好日子,我被困在弄清楚如何从列表中获取单个对象,我做了谷歌,但所有主题都显示了如何返回带有排序对象或类似内容的List

我有一个用户类

class User() {

    var email: String = ""
    var firstname:  String = ""
    var lastname: String  = ""
    var password: String  = ""
    var image: String  = ""
    var userId: String  = ""

    constructor(email:String,
                firstname: String,
                lastname: String,
                password: String,
                image: String, userId : String) : this() {
        this.email = email
        this.firstname = firstname
        this.lastname = lastname
        this.password = password
        this.image = image
        this.userId = userId
    }
}

在java中,我会这样写

 User getUserById(String id) {
        User user = null;
        for(int i = 0; i < myList.size;i++;) {
            if(id == myList.get(i).getUserId())
            user = myList.get(i)
        }
        return user;
    }

我怎样才能在kotlin中获得同样的结果?

共有3个答案

康泽宇
2023-03-14

简化

val user: User = myList.single { it.userId == id }

或者如果可能列表没有您的过滤器

val user: User? = myList.singleOrNull{ it.userId == id }
逄嘉木
2023-03-14

如果您不想处理空对象,请尝试以下操作:

val index = myList.indexOfFirst { it.userId == id } // -1 if not found
if (index >= 0) {  
    val user = myList[index]
    // do something with user
}
濮升
2023-03-14

您可以使用 find 执行此操作,它为您提供了与给定谓词匹配的列表的第一个元素(如果没有匹配,则为 null):

val user: User? = myList.find { it.userId == id }

或者,如果您确实需要与谓词匹配的最后一个元素,就像您的Java示例代码一样,您可以使用last

val user: User? = myList.last { it.userId == id }
 类似资料:
  • 核心问题:如何正确地将查询中的信息提取到对象中? 想法 我在我的DAO中创建函数,这归结为以下查询: 我正在寻找一种方法来创建一个jOOQ表达式,它只给我一个列表(或者一些我可以循环的东西),对象是A(pojo)和整数。 具体案例 在我的代码案例中:A=志愿者和B=志愿者匹配,我为每个志愿者存储几个匹配。B的主键是(自愿ID,自愿MatchId)。因此,这个查询会得到志愿者的信息以及匹配的数量。显

  • 在XML文档中,例如: 如果任何元素包含'Text1'的内部文本,则返回Null集的单个XPath 1.0兼容、local-namespace()兼容的表达式是什么? 我尝试了许多不同的表达式,但无法获得返回空集的元素。 例如。 严格的要求是由于一个具体的实施。NET函数调用XmlNode.选择单节点方法(字符串) Dimitre提供的最终精确解

  • 我有class-user,它看起来如下所示: 这两个哈希映射包含未知的键和字符串类型的值(它们给我带来了很多麻烦)。 我已经使用insert方法将该类映射到表中。并将其映射到下表方案: 我有什么方法来处理这些hasmaps? 谢谢!

  • 问题内容: 我有一个对象列表。对象具有3个字符串属性。我想制作一个仅包含类中特定属性的列表。 有内置的功能可以做到这一点吗? 问题答案: 列表理解会很好地工作: 但是,由于您要求:-),所以有内置功能的组合。

  • 问题内容: 我想知道是否可以在SQL Server中运行一个命令/存储的程序,该程序将为我提供包含表中给定数据的列的名称。 因此,如果我要查询,请给我该表中所有包含值75的列。我不希望该行。只是表中的列名…这可能吗? 问题答案: 当您对输出感到满意时,请取消注释。 因此,让我们考虑一个简单的表: 现在,基于上述代码的存储过程: 用法示例: 输出:

  • 问题内容: 我正在尝试编写一个名为flatten_list的函数,该函数将可能嵌套的列表作为输入,并返回包含输入列表的所有元素的非嵌套列表。 我的代码: 此代码适用于带有字符串的列表,但不适用于整数值。如何更改代码,使其同时适用于两者? 谢谢 问题答案: 通常,这将以递归方式进行,例如: 这将可迭代的容器的任意组合(例如工作,,,(仅按键))和内容(例如,,),使用普通EAFP Python的风格