我创建了一个Java Stack,并向其中添加了一些自定义对象。这些对象包含唯一ID作为其字段之一。我需要根据唯一名称获取该对象在堆栈中的索引。请找到示例。
class TestVO{
private String name;
private String uniqueId;
//getters and setters
}
public class TestStack{
public static void main(String args[]){
TestVO vo1=new TestVO();
TestVO vo2=new TestVO();
TestVO vo3=new TestVO();
vo1.setName("Test Name 1")
vo1.setId("123")
vo2.setName("Test name 2");
vo2.setId("234");
Stack<TestVO> stack=new Stack<TestVO>();
stack.add(vo1);
stack.add(vo2);
//I need to get the index of a VO from stack using it's unique ID
}
}
有人可以帮我实现这个吗?
最佳答案
首先,为TestVO
类实现hashCode和equals方法:
class TestVO{
private String name;
private String uniqueId;
public boolean hashCode() {
if (uniqueId == null) return 0;
return uniqueId.hashCode();
}
public boolean equals(Object o) {
if (o instanceof TestVO) {
TestVO other = (TestVO) o;
return o.uniqueId.equals(uniqueId);
}
return false;
}
//getters and setters
}
请注意,在equals方法中,您应该添加额外的代码以检查
o.uniqueId
是否不为null。现在,您可以使用以下代码使用其唯一ID查找TestVO对象的索引:
int index = stack.indexOf(vo1);