我正在使用BlueJ学习Java,我创建了一个HashMap
(Integer, String)
的类,其中包含某人的ID号及其名称。
我想要一个方法来返回满足条件的所有键的集合,例如,如果它们的ID号以3开头。我无法弄清楚如何做到这一点。
然后另一个方法,如果它们满足条件,则返回值的集合,我认为它与前面的方法非常相似。
我知道我需要遍历地图,但我不知道如何编写条件来填充新地图。
答案 0 :(得分:1)
这是一个返回Collection中所有奇数键的示例。列表和集合是集合,与ArrayLists列表的方式相同。您可以在此示例中将Collection更改为List(甚至是ArrayList),它也可以执行相同的操作。
public Collection<Integer> getOddKeys() {
// keySet is a method of Map that returns a Set containing all the keys (and no values).
Collection<Integer> result = new ArrayList<Integer>();
for(Integer key : map.keySet()) {
if((key % 2) == 0) // if the key is odd...
result.add(key); // ... then add it to the result
}
return result;
}
您应该可以修改此示例来检查值 - 我不会只是给您那些代码,因为它非常相似,如果您了解此示例的工作方式,则很容易理解
您需要使用values
方法,该方法返回值的集合,其方式与keySet
返回密钥集合(更具体地说,一组)的方式相同。如果您想知道为什么keySet
会返回一个集合并且values
没有,那么因为您可以在地图中使用相同的值两次,但您可以&# 39;两次使用相同的密钥。
答案 1 :(得分:0)
您可以执行以下操作:
map.keySet().iterator();
答案 2 :(得分:0)
在你的情况下(如果地图不是太大),我将获得地图的所有键,然后逐个处理它们以计算我的标准:
Map<Integer, String> myMap=getFromSomeWhere();
for(Integer i : myMap.keySet() {
String k=String.valueOf(i);
if(k.startsWith("3")) {
//do what you want
}
}
答案 3 :(得分:-1)
public void CountryAbbriviationMap(String input)
{
map<string ,string> countrymap =new map<string ,string>{'Australia'=>'AUS','Argentina'=>'ARG', 'India'=>'IND'};
for(string key : countrymap.keySet())
{
if(key.startsWithIgnoreCase('A') && input.startsWithIgnoreCase('A'))
{
system.debug(key); //TO GET KEYS
system.debug(countrymap.get(key)); //TO GET VALUES
}
}
}