搜索String实例

时间:2016-04-04 15:53:53

标签: java hashmap

我的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

非常感谢任何协助。

2 个答案:

答案 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.
  }
}