我创建了一个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);

10-07 23:48