【问题标题】:Search HasMap value for String instance搜索 String 实例的 HasMap 值
【发布时间】:2016-04-04 15:53:52
【问题描述】:

我的 GUI 类中有一个 HashMap:

HashMap<Integer, Party> partyInput = new HashMap<>();

并使用来自用户的字符串输入搜索其实例的 hashMap 值。如何将字符串转换为派对对象或将派对对象转换为字符串?我可以轻松搜索密钥,并有几个其他程序可以搜索 String 的值,但无法弄清楚这种情况。尝试:

// target is the value input from user by JTextField
if (partyInput.containsValue(target)) {

    }

给我“对 have.util.Map.containsValue 的可疑调用:给定对象不能包含 String 的实例(预期方)”。

党课:

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

任何帮助将不胜感激。

【问题讨论】:

  • Party 的值对应target 的什么属性?
  • 什么是Party?您是否正在寻找Party 的特定属性?如果您包含minimal reproducible example,会更容易为您提供帮助。
  • 如果Party 是您自己的类,您需要自己想办法获取给定字符串的适当Party 实例。或者发布它的代码,以便我们知道它是什么。

标签: java hashmap


【解决方案1】:

如果您可以从字符串构造Party 实例,那么也许您可以执行以下操作:

if(partyInput.containsValue(new Party(text)) {
    // Do something
}

假设 equals 已被适当地覆盖。

或者您可以遍历设置的值并尝试匹配 Party 对象中的属性。

    for(Party party  : m.values()) {
        if(text.equals(party.getXXX())) {
            // Do something
        }
    }

【讨论】:

    【解决方案2】:

    如果target 字符串是Party 的某个属性的值,您只需迭代地图的值以查找具有匹配属性的实例,例如

    for (Party party : map.values()) {
      if (party.getTarget().equals(target)) {
        // Do whatever.
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多