Java 如何将字符串与哈希映射中的键进行比较

Java 如何将字符串与哈希映射中的键进行比较,java,arrays,hashmap,hashtable,Java,Arrays,Hashmap,Hashtable,我很难将字符串(str)与hashmap中的键进行比较。从下面的代码中可以看到,我有多个键。我正在将str与键进行比较,但无法获取该特定键的值。请注意,地图包含硬币 仅当我直接输入字符串如entry.getKey().getKeyOne().toString().contains(“硬币”) String str=“coin”; 对于(Map.Entry:Map.entrySet()){ if(entry.getKey().getKeyOne().toString()包含(str)|| entr

我很难将字符串(
str
)与hashmap中的键进行比较。从下面的代码中可以看到,我有多个键。我正在将
str
与键进行比较,但无法获取该特定键的值。请注意,地图包含
硬币

仅当我直接输入字符串如entry.getKey().getKeyOne().toString().contains(“硬币”)

String str=“coin”;
对于(Map.Entry:Map.entrySet()){
if(entry.getKey().getKeyOne().toString()包含(str)||
entry.getKey().getKeyTwo().toString().contains(str)){
entry.getValue();
}
}
公共类对{
私有字符串keyOne;
私有字符串键2;
配对(第一串,第二串){
这个。keyOne=1;
这个。keyTwo=2;
}
公共字符串getKeyOne(){
返回键一;
}
公共字符串getKeyTwo(){
返回键2;
}
}

建议:只要您在
映射中使用自己的类
,您必须重写
等于()
,并且应该重写
hashCode()

您可以使用字符串literal进行示例,因为“coin”位于中,并且所有引用的字符串都相同

在这里运行:

public class Pair {

    private String keyOne;
    private String keyTwo;

    Pair(String one, String two) {
        this.keyOne = one;
        this.keyTwo = two;

    }

    public String getKeyOne() {
        return keyOne;
    }

    public String getKeyTwo() {
        return keyTwo;

    }

    public static void main(String[] args) {
        Map<Pair, String> map = new HashMap();
        map.put(new Pair("coin", "5"), "U");
        map.put(new Pair("bill", "100"), "H");
        map.put(new Pair("10", "5coin"), "T");

        String str = new String("coin");
        for (Map.Entry<Pair, String> entry : map.entrySet()) {
            if (entry.getKey().getKeyOne().toString().contains(str)
                    || entry.getKey().getKeyTwo().toString().contains(str)) {
                System.err.println(entry.getValue());
            }
        }
    }
}
公共类对{
私有字符串keyOne;
私有字符串键2;
配对(第一串,第二串){
这个.keyOne=1;
这个.keytoo=2;
}
公共字符串getKeyOne(){
返回键一;
}
公共字符串getKeyTwo(){
返回键2;
}
公共静态void main(字符串[]args){
Map Map=newhashmap();
地图放置(新的一对(“硬币”、“5”)、“U”);
地图放置(新的一对(“比尔”、“100”)、“H”);
地图放置(新的一对(“10”,“5coin”),“T”);
字符串str=新字符串(“硬币”);
对于(Map.Entry:Map.entrySet()){
if(entry.getKey().getKeyOne().toString()包含(str)
||entry.getKey().getKeyTwo().toString().contains(str)){
System.err.println(entry.getValue());
}
}
}
}

以下是简单的示例代码 如果您只需要一个Hashmap

public void findInkeys(String findkey){
    HashMap<String, Object> map=new HashMap<>();

    //Place your content of MAp Here
    //Start

    //end
    //or you can place your content anywhere else but make sure is is initialized before this


    Set<String> keys=map.keySet();
    boolean isInKeys=false;
    for (String k : keys)
    {
        if(k.equals(findkey))
        {
            isInKeys=true;
        }
    }
    System.out.println(isInKeys);
}
如果要比较多个键,请使用下面的代码

public void findInkeys(HashMap<String, String> map,ArrayList<String> keyList){
    Set<String> keys=map.keySet();
    boolean isInKeys=false;
    for (String k : keys)
    {
        if(keyList.contains(k))
        {
            isInKeys=true;
        }
    }
    System.out.println(isInKeys);
}
public void findinkey(HashMap映射,ArrayList键列表){
Set keys=map.keySet();
布尔值isInKeys=false;
用于(字符串k:键)
{
if(keyList.contains(k))
{
isInKeys=真;
}
}
系统输出打印项次(isInKeys);
}

什么是
?试试这个,它在android中,但是如果是你自己的类,你能发布KeyOne和KeyTwo的toString实现吗。如果没有,请添加Andrew前面提到的Pair的代码。你能发布你是如何初始化HashMap的吗?这是HashMap吗?你想要像:entry.getKey()包含(“硬币”)这样的东西吗?你能给我举个例子吗?
public void findInkeys(HashMap<String,Object> map,String findkey){

    Set<String> keys=map.keySet();
    boolean isInKeys=false;
    for (String k : keys)
    {
        if(k.equals(findkey))
        {
            isInKeys=true;
        }
    }
    System.out.println(isInKeys);
}
public void findInkeys(HashMap<String, String> map,ArrayList<String> keyList){
    Set<String> keys=map.keySet();
    boolean isInKeys=false;
    for (String k : keys)
    {
        if(keyList.contains(k))
        {
            isInKeys=true;
        }
    }
    System.out.println(isInKeys);
}