public class Person extends Object{
String name;
int age;
public Person(String name,int age){
this.name=name;
this.age=age;
} public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
} public boolean equals(Object o){
if(o instanceof Person){
Person p3=(Person)o;
return this.age==p3.age&&this.name.equals(p3);
}
else{
return false;
}
}
public String toString(){
return "Name: " + name + "\tAge: " + age;
}
}
import java.util.*;
public class TestPersonArrayList{public static void main(String args[]){
Person p1=new Person("li",31);
Person p2=new Person("lia",32);
Person p3=new Person("lib",34);
Person p4=new Person("lic",35);
ArrayList<Person> persons=new ArrayList<Person>();
persons.add(p1);
persons.add(p2);
persons.add(p3);
for(Person p:persons){
System.out.println(p.getName());
}
persons.add(0,p4);
for(Person p:persons){
System.out.println(p.getName());
}persons.remove(p2);for(Person p:persons){
System.out.println(p.getName());
}
}
}remove怎么不好用呢
String name;
int age;
public Person(String name,int age){
this.name=name;
this.age=age;
} public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
} public boolean equals(Object o){
if(o instanceof Person){
Person p3=(Person)o;
return this.age==p3.age&&this.name.equals(p3);
}
else{
return false;
}
}
public String toString(){
return "Name: " + name + "\tAge: " + age;
}
}
import java.util.*;
public class TestPersonArrayList{public static void main(String args[]){
Person p1=new Person("li",31);
Person p2=new Person("lia",32);
Person p3=new Person("lib",34);
Person p4=new Person("lic",35);
ArrayList<Person> persons=new ArrayList<Person>();
persons.add(p1);
persons.add(p2);
persons.add(p3);
for(Person p:persons){
System.out.println(p.getName());
}
persons.add(0,p4);
for(Person p:persons){
System.out.println(p.getName());
}persons.remove(p2);for(Person p:persons){
System.out.println(p.getName());
}
}
}remove怎么不好用呢
把remove(p2);改成remove(2);
if (o instanceof Person) {
Person p3 = (Person) o;
return this.age == p3.age && this.name.equals(p3); } else {
return false;
}
}这里
return this.age == p3.age && this.name.equals(p3);你用name 和整个person对象比较 会让equals返回false
所以你remove的时候 此方法就会认为list内部的person与p2 不同就不去删除
return this.age==p3.age&&this.name.equals(p3.getName());
改成 return this.age==p3.age && this.name.equals(p3.getName());