程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用数据类 Kotlin 在 Map 中添加用户大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用数据类 Kotlin 在 Map 中添加用户?

开发过程中遇到如何使用数据类 Kotlin 在 Map 中添加用户的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用数据类 Kotlin 在 Map 中添加用户的解决方法建议,希望对你解决如何使用数据类 Kotlin 在 Map 中添加用户有所启发或帮助;

所以我想在地图中添加用户,然后检查它是否已添加到那里。 例如,用户输入他们的信息,我将他们的电子邮件保存为键,将数据类中的信息保存为值

private val users = mutableMapOf<String,User>()

private fun add(){
    check()
    val email = binding.email.text.toString()
    val firstname = binding.firstname.text.toString()
    val lastname = binding.lastname.text.toString()
    val age = binding.age.text.toString()

    users["default"] = User("email","firstname","lastname","age")
    for (user in users.keys){
        if (email == user) {
            Toast.makeText(this,"not successful",Toast.LENGTH_SHORT).show()
            break
        }else{
            users[email] = User(email,firstname,lastname,agE)
            Toast.makeText(this,"successful",Toast.LENGTH_SHORT).show()
        }
    }
}

但是当我第一次点击按钮时,它只是说成功,但是在第二次点击时它应该返回不成功,因为这个用户已经创建,但它显示了两个祝酒词。

你能告诉我为什么会这样吗,我该如何解决?

解决方法

这与 for 循环不能保证它会按照您期望的顺序迭代键的事实有关。

例如,虑这张地图:

users["default"] = User("email","firstName","lastName","age")
users["zzz@xyz.com"] = User("email","zz","z","age")

假设键将按字母顺序迭代(大多数情况下实际上并非如此)并且您有email=zzz@xyz.com

在第一次迭代中,user 字符串将引用 default。由于 email == user 为假,它会转到循环的 else 分支。然后,在下一次迭代中,user 将为 zzz@xyz.comemail == user 将为真;只是发送两次“toast”通知。

您似乎试图插入不存在的元素,或者如果存在则显示错误。虑使用 for 检查前一个键是否存在,然后在必要时添加新元素,而不是 containsKey 循环。

// In kotlin,you can create a map with initial values by using the "to" infix function
private val users = mutableMapOf<String,User>(
    "default" to User("email","age")
)

private fun add() {
    check()
    val email = binding.email.text.toString()
    val firstName = binding.firstname.text.toString()
    val lastName = binding.lastname.text.toString()
    val age = binding.age.text.toString()

    if (users.containsKey(email)) {
        Toast.makeText(this,"not successful",Toast.LENGTH_SHORT).show()
        return
    }

    users[email] = User(email,firstName,lastName,agE)
    Toast.makeText(this,"successful",Toast.LENGTH_SHORT).show()
}
,

是因为您将映射键与电子邮件值进行比较。您需要比较电子邮件的价值。尝试在 for: email == user.value.email.

中执行以下操作

大佬总结

以上是大佬教程为你收集整理的如何使用数据类 Kotlin 在 Map 中添加用户全部内容,希望文章能够帮你解决如何使用数据类 Kotlin 在 Map 中添加用户所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。