我的GUI类中有一个HashMap:
HashMap<Integer, Party> partyInput = new HashMap<>();
并使用来自用户的String输入搜索其实例的hashMap值。如何将String转换为Party Object或Party Object to String?我可以轻松搜索密钥,并有几个其他程序搜索String的值,但无法弄清楚这种情况。尝试:
// target is the value input from user by JTextField
if (partyInput.containsValue(target)) {
}
给我&#34;可疑调用have.util.Map.containsValue:给定对象不能包含String的实例(期望的Party)&#34;。
派对类:
import java.util.ArrayList;
public class Party extends GameElement{
ArrayList<Creature> creature = new ArrayList<>();
public Party() {
} // end default constructor
// constructor for all Party member fields
public Party (int index, String name) {
// get fields from parent GameElement class
super(index, name);
} // end Party constructor
// getter for creature members of each party
public ArrayList<Creature> getMembers() {
return creature;
} // end getMemebers method
// setter for creature members of each party
public void setMembers(ArrayList<Creature> partyMembers) {
this.creature = partyMembers;
} // end setMemebers method
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(String.format("%n**********************************************************"));
sb.append(String.format("%nParty: %s%n", getName()));
sb.append(String.format("Creatures %n"));
creature.stream().forEach((c) -> {
sb.append(String.format("**** %s%n", c.getName()));
});
return sb.toString();
} // end toString method
} // end Party class
非常感谢任何协助。
答案 0 :(得分:2)
如果你可以从String构造一个Party
实例,那么也许你可以做以下几点:
if(partyInput.containsValue(new Party(text)) {
// Do something
}
假设equals
已被适当覆盖。
或者您可以迭代值集并尝试匹配Party
对象中的属性。
for(Party party : m.values()) {
if(text.equals(party.getXXX())) {
// Do something
}
}
答案 1 :(得分:1)
如果target
字符串是Party
的某个属性的值,则需要迭代映射的值以查找具有匹配属性的实例,例如
for (Party party : map.values()) {
if (party.getTarget().equals(target)) {
// Do whatever.
}
}