2016-10-27 3 views
-3

私はJavaプログラミングコースで私に与えられた仕事を持っています。この作業では、同じキーを持つHas​​hMap要素の数を返すメソッドを作成する必要があります。しかし、問題はイテレータが異なるキーのみを持つ要素を通過することです。とにかく、このメソッドは1を返します。どのような方法がありますか?同じキーを持つHas​​hMap要素のすべての値を取得できますか? (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; 
    } 
} 
+2

はなぜHashMapのは、同じキーに対して複数のエントリが含まれているのでしょうか? –

+3

同じキー、ピリオドで異なる要素を使用することはできません。 – SLaks

+2

あなたはタスクを正しく理解していますか?あなたは同じ値を持つキーの数を数えたのでしょうか? – bradimus

答えて

0

これは難しい質問のようです。 HashMapのキーは一意でなければなりません。同じキーに複数の要素を格納する場合は、

Map<Integer, List<Object>> map = new HashMap<>(); 

のようにコレクションを保存できます。次に、次のメソッドはListを返します。

map.get(0) 
0

これはトリック質問のようです。 HashMap内の各キーは、関連する値を1つしか持てません。 HashMapの各キーは一意である必要があります。

古い値が交換された重複キーを追加(HashMap.putを参照)

関連する問題