需要HashMap帮助

时间:2016-02-22 11:27:41

标签: java

  

计划1:你是一名跑步者,你正在接受比赛训练。您希望跟踪训练时间的所有时间。你只想在湖泊周围奔跑。这是一些示例数据,

Calhoun, 45.15
Calhoun, 43.32
Harriet,  49.34
Harriet, 44.43
Harriet, 46.22
Como, 32.11
Como, 28.14
  

请编写一个程序,使您能够输入湖泊和时间的名称,并将所有这些数据存储在数据结构中。不要将它存储在个别变量中。如果你开始在另一个湖边跑(例如Cedar或Phalen),你的程序仍然可以工作。

     

您的程序应该能够分析您存储的数据,并为您跑来跑去的每个湖打印最快的时间。因此,对于此数据,您的程序将显示

Calhoun, 43.32
Harriet, 44.43
Como, 32.11
  

您的程序应使用输入验证。

     

您应该使用方法来整理程序。

这是我尝试使用HashMap做的事情,但它似乎无法发挥作用。

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //Creating a HaspMap as String for Key and Double for value
        HashMap<String, Double> map = new HashMap<String, Double>();
        String lakeName;//Variable to store lake name
        double time;//Variable to store time




        while (true){
            System.out.println("What is the lake name: ");
            lakeName = input.next();
            System.out.println("How many minutes did you run: ");
            time = input.nextDouble();
            map.put(lakeName, time);//Addding Lake Name to and time to theHaspMap


            if (lakeName.equalsIgnoreCase("A") || time ==1)//A condition to exit the loop 
                 {
                break;


            }

        }
        System.out.println();
    }
}

2 个答案:

答案 0 :(得分:1)

使用{"title":"title", "artist":"artist","media":"url media.mp3","color":"#56B0E8" },可以为每个湖存储一个结果。如果将其更改为HashMap<String, Double>,您将能够为每个湖泊存储多个结果,并找到给定湖泊的最快结果。

而不是

HashMap<String, List<Double>>

你会有类似的东西:

map.put(lakeName, time);

答案 1 :(得分:1)

您无法使用Map<String, Double>所需的Map<String, List<Double>>来存储每个湖泊中的所有时间。

存储时,您必须检索湖泊时间:

List<Double> times = map.get("Harriet");

获得较低的列表值。

Double bestTime = Double.MAX_VALUE;
for (Double time : times) {
    if (bestTime > time) bestITime = time;       
}