检查两个集合是否包含相同的元素(独立于顺序)的方法?

2022-09-04 04:57:14

假设我有两个不同的哈希集,如下所示,我如何检查两个哈希集是否包含相同的元素,并且这两个哈希集是否相等,与集合中元素的顺序无关,请告知..!!

Set set1=new HashSet();
          set.add(new Emp("Ram","Trainer",34000));
          set.add(new Emp("LalRam","Trainer",34000));

另一个是..

Set set2=new HashSet();
          set.add(new Emp("LalRam","Trainer",34000));
          set.add(new Emp("Ram","Trainer",34000));

员工pojo是...

class Emp //implements Comparable
{
      String name,job;
      public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    int salary;
      public Emp(String n,String j,int sal)
      {
         name=n;
         job=j;
         salary=sal;
       }
      public void display()
      {
        System.out.println(name+"\t"+job+"\t"+salary);
       }



  public boolean equals(Object o)
      {

         Emp p=(Emp)o;
          return this.name.equals(p.name)&&this.job.equals(p.job) &&this.salary==p.salary;
       }
   public int hashCode()
       {
          return name.hashCode()+job.hashCode()+salary;
       }


      /* public int compareTo(Object o)
       {
          Emp e=(Emp)o;
          return this.name.compareTo(e.name);
           //return this.job.compareTo(e.job);
        //   return this.salary-e.salary;

        }*/
} 

答案 1

引用自 AbstractSet.equals(Object) javadoc:

如果给定对象也是一个集合,则返回 true,两个集合具有相同的大小,并且给定集合的每个成员都包含在此集合中。这可确保 equals 方法在 Set 接口的不同实现中正常工作。

因此,只需调用 就足够了。当且仅当集合包含相同的元素(假设您已正确定义和集合中的对象)时,它将返回。set1.equals(set2)trueequalshashCode


答案 2

使用以下表达式。

set1.containsAll(set2) && set2.containsAll(set1)