如何比较java中包含对象的两个地图

时间:2015-04-27 04:33:44

标签: java hashmap

import java.util.*;
class Getter_Setter
{
    int id;
    String name;
    public List<Getter_Setter> buckets;
    public String getName()
    {
        return name;
    }
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id=id;
    }
    public void setName(String name)
    {
        this.name=name;
    }
    public void setGetter_Setter(List<Getter_Setter> buck)
    {
        this.buckets=buck;
    }
}
class Getter_Setter2
{
    int id;
    String name;
    public List<Getter_Setter> buckets;
    public String getName()
    {
        return name;
    }
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id=id;
    }
    public void setName(String name)
    {
        this.name=name;
    }
    public void setGetter_Setter2(List<Getter_Setter> buck)
    {
        this.buckets=buck;
    }
}
class Simple
{
    HashMap<String,Getter_Setter> map=new HashMap<String,Getter_Setter>();
    HashMap<String,Getter_Setter2> map_getter_setter2=new HashMap<String,Getter_Setter2>();
    public static void main(String arg[])
    {
        List<Getter_Setter> temp=sum();
        List<Getter_Setter2>temp=sum1();
    }
    public static List<Getter_Setter> sum()
    {
        List<Getter_Setter> list=new ArrayList<Getter_Setter>();
        Getter_Setter get=new Getter_Setter();
        get.setId(30);
        get.setName("Hanish");
        System.out.println(get.getId());
        System.out.println(get.getName());
        list.add(get);
        map.put(get.getId(),get);
        return list;
    }
    public static List<Getter_Setter> sum1()
    {
        List<Getter_Setter2> list=new ArrayList<Getter_Setter2>();
        Getter_Setter2 get=new Getter_Setter2();
        get.setId(301);
        get.setName("Hanish1");
        System.out.println(get.getId());
        System.out.println(get.getName());
        list.add(get);
        map_getter_setter2.put(get.getId(),get);
        return list;
    }
}

如何比较在这种情况下具有一些值的两个地图对象。如果这些mapss包含大量数据,但id是唯一的。有两个类,第一个是getter_setter,它在地图对象和数据中有数据第二个类是getter_setter2,它在map_getter_Setter中包含整个数据。我需要在id的基础上进行比较,然后将比较整个数据。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,主要的问题是像id和data这样的字段在hashmap类中,因此有点不那么直接比较。

您可以编写自定义比较器类,首先通过迭代比较id,然后比较map中的数据,最后给出相等的值。为此,请参阅此答案enter link description here

另一种选择是使用比较链。enter link description here,它将帮助您轻松使用多重比较。