我这里有一个从JList获取对象的方法。然后,该对象将是一个匹配hashmap中某些值的字符串。例如,有多个值。
Course1 - John
Course2 - John
Course3 - Mary
Course4 - Mary
有没有办法循环遍历一个hashmap并查找某个值,然后放置key&值为一个字符串,然后可以添加到列表模型?
答案 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" ) );
}