怎么比较两个数组中的元素(java)

2025-03-30 18:02:53
推荐回答(3个)
回答1:

//Person.java
public class Person {

private String name;

public Person(String name) {
super();
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
//这里实现了该类的equals方法,
//目的用于将判断两个对象是否相等转换成判断两个对象的name是否相等
//也就是说如果两个对象的name相等,那这两个对象就相等。
public boolean equals(Object obj) {
Person p=(Person) obj;
if(this.name==null&&p.name==null){
return true;
}else if(this.name!=null && p.name!=null){
return this.name.equals(p.name);
}else{
return false;
}
}

}

==========================================================

你要的写法在这里

import java.util.Arrays;
//Test.java
public class Test {
public static void main(String[] args) {
Person[] p1=new Person[3];
Person[] p2=new Person[3];
for (int i = 0; i < p1.length; i++) {
p1[i]=new Person(""+(char)('A'+i));
p2[i]=new Person(""+(char)('A'+i));
}
//判断两个数组里的元素是否依次对应相等,
//就用系统的这个方法
//这个方法会使用各个元素的equals方法进行比较,最后得出结论
boolean b = Arrays.deepEquals(p1, p2);
System.out.println(b);

//用for循环进行比较做法如下
b=true;
for (int i = 0; i < p1.length; i++) {

//如果Person没有重写equals方法这么写
if(!p1[i].getName().equals(p2[i].getName())){
//如果有一个不一样,就记录下来,然后退出
b=false;
break;
}
//如果重写equals方法了,这么写
if(!p1[i].equals(p2[i])){
//如果有一个不一样,就记录下来,然后退出
b=false;
break;
}

}
//打印出结果
System.out.println(b);
}

}

回答2:

比较的方法需要你自己写,最好是些在那个需要进行比较的类中,也就是你自己定你想要以他的什么属性来作为比较标准。
public class ComparePerson {
public static void main(String []args)
{
Person p1[]=new Person[3];
Person p2[]=new Person[3];
for(int i=0;i<3;i++)
{
p1[i]=new Person(("person"+i),(i+20));
p2[i]=new Person(("person"+i),(i+20));
//p2[i]=new Person("person2",(i+10)); 这样写以后下面打印出来的值为false
}
//System.out.println("这两群人的年龄是否对应相同? "+compare(p1,p2));
System.out.println("这两群人的姓名是否对应相同? "+compare(p1,p2));
}
public static boolean compare(Person []p1, Person[]p2)
{
for(int i=0;i {
if(p1[i].compareTo(p2[i])!=0)
{
return false;
}
}
return true;
}
}

class Person
{
private int age;
private String name;
public Person(String name, int age)
{
this.name =name;
this.age = age;
}

public int getAge()
{
return age;
}
public String getName()
{
return name;
}

/*public int compareTo(Person p)
{
//这里我假设以年龄作为标准来比较
if(age>p.getAge())
{
return 1;
} else if(age < p.getAge())
{
return -1;
} else return 0;
}*/
public int compareTo(Person p)
{
//这里我假设以姓名作为标准来比较,调用字符串比较的方法;
return name.compareTo(p.getName());
}
}

回答3:

楼主,你的数组什么类型啊?
for(int i = 0;i for(int j = 0;j if(p[i] == p1[j]){
System.out.println("true");
}
}
}