contains方法的源码是用equals()比较的,也就是说比较的是地址,所以要在类中重写equals()方法.看代码如何实现的:
User类
package test3;
public class User {
private String name;
private String pswd;
public User(String name, String pswd) {
this.name = name;
this.pswd = pswd;
}
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPswd() {
return pswd;
}
public void setPswd(String pswd) {
this.pswd = pswd;
}
@Override
public String toString() {
return "User [name=" + name + ", pswd=" + pswd + "]";
}
public boolean equals(Object obj) {
if(this==obj)//地址相同
return true;
else if(obj!=null&&obj instanceof User) {
User u=(User)obj;
return this.name.equals(u.name)&&this.pswd.equals(u.pswd);
}
else
return false;
}
}
main中:
package test3;
import java.util.ArrayList;
import java.util.Scanner;
/*3.创建一个User类,包含name和password两个成员变量.
* 向一个ArrayList对象添加5个User对象,
* 这5个User对象的成员变量的值分别为name="1",password="a",
* name="2",password="b",
* name="3",password="c",
* name="4",password="d",
* name="5",password="e"。
* 然后创建一个User对象,这个User对象的成员变量为name="3",password="c",
* 然后使用contains方法测试这个对象是否包含在ArrayList对象中。
*
*/
public class Work2 {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
for(int i=0;i<5;i++){
System.out.println("请输入姓名");
String name = sc.next();
System.out.println("请输入密码");
String pswd = sc.next();
User user = new User(name,pswd);
list.add(user);
}
for(int i=0;i<list.size();i++){
User user = list.get(i);
System.out.println(user);
}
User u = new User("5","e");
Boolean f = list.contains(u);
if(f){
System.out.println("包含");
}else{
System.out.println("不包含");
}
}
}