根据值显示hashmap的入口集

时间:2012-03-03 06:45:16

标签: java swing loops hashmap

我这里有一个从JList获取对象的方法。然后,该对象将是一个匹配hashmap中某些值的字符串。例如,有多个值。

 Course1 - John
 Course2 - John
 Course3 - Mary
 Course4 - Mary

有没有办法循环遍历一个hashmap并查找某个值,然后放置key&值为一个字符串,然后可以添加到列表模型?

2 个答案:

答案 0 :(得分:1)

如果仅搜索值,请使用hashmap的keySet()方法获取键,然后循环遍历它们以获取相应的值。

for(String key : hashMap.keySet())
   {
     String value = hashMap.get(key);

     if(searchString.equals(value))
       {
          String keyAndValue = key + value; // this is what you want
       }    
   }

如果要搜索键和值,请使用hashmap的entrySet()方法获取条目,然后循环遍历它们以查找匹配项。

 for(Map.Entry<String, String> entry : hashMap.entrySet())
   {
     String key = entry.getKey();
     String value = entry.getValue();

     if(searchString.equals(key) || searchString.equals(value))
       {
          String keyAndValue = key + value; // this is what you want
       }    
   }

答案 1 :(得分:1)

使用搜索方法迭代地图并返回匹配列表:

public static ArrayList < String > searchMap ( HashMap map, String value )
{
    ArrayList < String > matchesFound = new ArrayList < String >();
    Iterator it = map.entrySet().iterator();
    while ( it.hasNext() )
    {
        Map.Entry entry = (Map.Entry) it.next();
        if ( entry.getValue() == value )
            matchesFound.add( entry.getKey() + " : " + entry.getValue() );
    }
    return matchesFound;
}

填充的散列图数据的示例用法:

public static void main ( String [] args )
{
    HashMap < String, String > map = new HashMap < String, String >();
    map.put( "Course1", "John" );
    map.put( "Course2", "John" );
    map.put( "Course3", "Mary" );
    map.put( "Course4", "Mary" );
    System.out.println( searchMap( map, "Mary" ) );
}