私はJavaプログラミングコースで私に与えられた仕事を持っています。この作業では、同じキーを持つHashMap要素の数を返すメソッドを作成する必要があります。しかし、問題はイテレータが異なるキーのみを持つ要素を通過することです。とにかく、このメソッドは1を返します。どのような方法がありますか?同じキーを持つHashMap要素のすべての値を取得できますか? (Java)
package com.javarush.test.level08.lesson08.task03;
import java.util.*;
/* Одинаковые имя и фамилия
Создать словарь (Map<String, String>) занести в него десять записей по принципу «Фамилия» - «Имя».
Проверить сколько людей имеют совпадающие с заданным имя или фамилию.
*/
public class Solution
{
public static void main(String[] args)
{
HashMap<String, String> friends = createMap();
getCountTheSameLastName(friends, "гладких");
getCountTheSameFirstName(friends, "Виталий");
}
public static HashMap<String, String> createMap()
{
HashMap<String, String> name = new HashMap<String, String>();
name.put("гладких", "Иван");
name.put("пересыпкин", "Артем");
name.put("пересыпкин", "Владислав");
name.put("халитов", "Виталий");
name.put("чернышев", "Виталий");
name.put("ивинских", "Виталий");
name.put("ивинских", "Альфред");
name.put("осипова", "Мария");
name.put("ивинских", "Павел");
name.put("гейтс", "Билл");
return name;
}
public static int getCountTheSameFirstName(HashMap<String, String> map, String name)
{
int MatchesFirstnameCount = 0;
for (HashMap.Entry<String, String> pair : map.entrySet()) {
String s = pair.getValue();
if (s.equals(name)) {
MatchesFirstnameCount++;
}
}
return MatchesFirstnameCount;
}
public static int getCountTheSameLastName(HashMap<String, String> map, String lastName)
{
int MatchesSecondnameCount = 0;
for (HashMap.Entry<String, String> pair : map.entrySet()) {
if (pair.getKey().equals(lastName))
MatchesSecondnameCount++;
}
return MatchesSecondnameCount;
}
}
はなぜHashMapのは、同じキーに対して複数のエントリが含まれているのでしょうか? –
同じキー、ピリオドで異なる要素を使用することはできません。 – SLaks
あなたはタスクを正しく理解していますか?あなたは同じ値を持つキーの数を数えたのでしょうか? – bradimus