gpt4 book ai didi

java - 使用未命名的对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:26 37 4
gpt4 key购买 nike

我正在学习 Java,并且有以下与使用列表中的对象相关的问题。

我创建了一个名为User的类。

此类使用一个构造函数,该构造函数在创建新对象时采用两个字符串:

字符串用户名,字符串密码

我正在练习从用户类创建用户对象列表,并编写了以下内容:

    public void createAndManipulateListOfUsers(){

List<User> userList = new ArrayList<>();

userList.add(new User("user1","password1"));
userList.add(new User("user2","password2"));

现在假设我想使用 indexOf 方法查找这些用户对象之一的索引位置,因为我还没有命名这些对象,我该如何执行此操作?

我以稍微不同的方式处理相同的情况,在将每个对象添加到列表之前创建并命名它们,如下所示:

    List<User> userList = new ArrayList<>();

User bob = new User("user1","password1");
User jim = new User("user2","password2");

userlist.add(bob);
userlist.add(jim);

/* because i've given each object a name on creation
i am able to use the objects like this:*/

System.out.println(userList.indexOf(bob));
assertEquals(0,userList.indexOf(bob));

有没有一种方法可以识别在第一个示例中创建的 User 对象,以便使用 indexOf 方法返回索引位置?

最佳答案

诀窍是 indexOf 循环遍历 List 并每次都使用 equals

如果您希望它识别 List 中的用户,则必须通过重写 Object 中的 equals 方法,告诉 java 如何判断 Needle 用户是否与列表中的用户相同。

请注意,这是出于教育目的,在大多数情况下,您应该创建一个引用,就像在第二个示例中一样。

您可以在 compilejava 上尝试此操作:

import java.lang.Math;
import java.util.ArrayList;
import java.util.List;

// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] args)
{
List<User> userList = new ArrayList<>();

userList.add(new User("user1","password1"));
userList.add(new User("user2","password2"));

User needle = new User("user2","password2");
System.out.println(userList);
System.out.println(userList.indexOf(needle));
}
}

// you can add other public classes to this editor in any order
public class User
{
private String a;
private String b;
public User(String a, String b) {
this.a = a;
this.b = b;
}

@Override
public boolean equals(Object other){
User otheruser = (User)other;
return (this.a.equals(otheruser.a) && this.b.equals(otheruser.b));
}
}

关于java - 使用未命名的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43226761/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com