请阅读此示例以了解我的问题,谢谢。
像这样向arraylist添加一些数据之后:
ArrayList<UserInfo> user_info = new ArrayList<>();
user_info.add(new UserInfo(1, "alex", "26"));
user_info.add(new UserInfo(2, "daniel", "23"));
user_info.add(new UserInfo(3, "veka", "19"));
我想获取“ veka” 的索引,我该怎么做? 我知道如何使用get index of来处理数组字符串,但是如何使用 UserInfo
的示例来做到这一点谢谢。
这是 UserInfo.class
public class UserInfo {
private int id;
private String UserName;
private String UserAge;
public UserInfo(int id, String userName, String userAge) {
this.id = id;
UserName = userName;
UserAge = userAge;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserAge() {
return UserAge;
}
public void setUserAge(String userAge) {
UserAge = userAge;
}
}
答案 0 :(得分:0)
您应该实现equals
方法的替代。 indexOf
函数将使用它。
一个例子在这里
public class Point {
int x;
int y;
public Point(int a, int b) {
this.x=a;this.y=b;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Point other = (Point) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
}
ArrayList<Point> p=new ArrayList<Point>();
Point p1 = new Point(3,4);
Point p2 = new Point(1,2);
p.add(new Point(3,4));
p.add(new Point(1,2));
System.out.println(p.indexOf(p1));
使用此信息,您可以更新您的课程,然后它将正常工作。
答案 1 :(得分:0)
您使用ArrayList而不是Hashmap的事实背后是否有某些原因? Hashmap通过特定键(可以是您的用户名)提供快速查找
伪代码看起来像这样:
HashMap<String, UserInfo> info = new Hashmap<>();
info.add("A", new UserInfo(1, "A", "26");
info.add("B", new UserInfo(2, "B", "26");
info.add("C", new UserInfo(3, "C", "26");
然后一个简单的info.get(“ A”)将返回UserInfo(2,“ B”,“ 26”)。
但是如果需要一个Arraylist,则遍历整个数组并检查所提供的UserName是否与UserInfo对象的Username相匹配。伪代码再次出现在这里:
您在ArrayList中添加了一个新方法:
public void isMatchingUsername(String userName) { return this.UserName == username; }
然后:
UserInfo matchingUser;
for(UserInfo userInfo : user_info){
if(userInfo.isMatchingUsername("theUsersUsername")){
machingUser = userInfo;
break;
}
}`
在那里,您已经找到了-matchingUser拥有您要查找的UserInfo的引用