我正在使用一个映射,并希望使用一个值对象作为映射键。。和一个列表作为值。值对象有两个属性:第一个名称、第二个名称。。我想把地图还给你。如果两个属性都与同一映射中的某个键匹配,则containsKey()为true。。
我尝试使用比较器如下
public class comaparatorEx implements Comparator<Test>{
public static void main(String args[]){
Map m= new HashMap<Test,List<String>>();
Test t = new Test();
t.setFirstname("vamsi");
t.setSecondname("priya");
List descriptionList=new ArrayList();
descriptionList.add("description1");
m.put(t, descriptionList);
Test t2 = new Test();
t2.setFirstname("vamsi");
t2.setSecondname("priya");
if(m.containsKey(t2)){
System.out.println("user found");
}
}
public int compare(Test o1, Test o2) {
if((o1.firstname.equals(o2.firstname) )&& o1.secondname.equals(o2.secondname))
return 0;
else return 1;
}
}
这是我正在使用的值对象
public class Test {
String firstname;
String secondname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getSecondname() {
return secondname;
}
public void setSecondname(String secondname) {
this.secondname = secondname;
}
}
但它为我返回假...请帮助我...谢谢提前
您需要重写hashcode()
和equals()
方法,以在Test
对象之间给出有意义的相等。HashMap
插入在hashcode
上。
当我们将键和值都传递给put()
方法以存储在HashMap
上时,它使用键对象hashcode()
方法来计算hashcode
,并且它们通过在该hashcode
上应用散列来标识存储值对象的桶位置,并且键equals()方法将用于标识HashMap中正确的键值对。
阅读更多:http://javarevisited.blogspot.com/2011/02/how-hashmap-works-in-java.html#ixzz2fDozSqmi
HashMap在内部使用hashCode()和equals()方法来确定要在哪个桶中查找,以及该桶中的对象是否相同。您需要为您的测试类实现这两个,否则它将有效地默认为引用相等(即它们是否是完全相同的对象)
对于HashMap
,您需要覆盖类中的equals
和hashCode
。
可能的实施:
class Test
{
...
@Override
public int hashCode()
{
return 31*firstname.hashCode() + secondname.hashCode();
}
@Override
public boolean equals(Object obj)
{
// basic type validation
if (!(obj instanceof Test))
return false;
Test t = (Test)obj;
return firstname.equals(t.firstname) && secondname.equals(t.secondname);
}
}
比较器
适用于基于比较的集合,如TreeMap
。要使用这个,请在构造函数中提供这个类的实例:
Map m = new TreeMap<Test,List<String>>(new comaparatorEx());
但是您的compare
函数有一个问题——元素之间需要有逻辑顺序(因为您永远不会返回-1
)<代码>字符串有一个比较器
,您可以使用它:
public int compare(Test o1, Test o2) {
int result = o1.firstname.compareTo(o2.firstname);
if (result == 0)
return o1.secondname.compareTo(o2.secondname));
else
return result;
}
我想找到属性中的是否包含某个值。然后我想获取包含该值的条目的索引。
我想知道中的属性
问题内容: Python中是否有一种方法可以确定对象是否具有某些属性?例如: 在使用a属性property之前,如何知道该属性是否存在? 问题答案: 尝试: 编辑:请参阅下面的的答案,他为寻求宽恕提供了很好的建议!一个非常的方法! 中的一般做法是,如果大多数情况下该属性很可能存在,则只需对其进行调用,然后让该异常传播,或者使用块将其捕获。这可能会比快。如果该属性在大多数时间可能不存在,或者你不确定
问题内容: 给定这样的结构: 是否可以将其映射到: 这样,您最终获得的实例的属性分别设置为和? 问题答案: 我坚信将您的POJO与外部化分开。将您的JSON读取到Map中,然后像这样构建您的Container / ScoreKeeper对象(对于任何错别字都为apols):
根据Mapstruct文档,通过为被引用的对象(对象B)定义映射方法,可以将一个对象(对象A)映射到D,该对象包含另一个对象(对象B)。但是如果我只需要映射那个对象(对象B)的属性而不是整个对象呢? 但是如何用Java和MapStruct来实现呢?
请看do while循环,我认为注释是不言自明的。我想检查该集合是否设置了所有具有符号a、b、c、d的卡片(借助数组或其他任何东西实现它)。