Хранение 2 коллекций в одном и том же hashmap / set java - PullRequest
0 голосов
/ 24 октября 2019

Итак, для моей школы я должен написать Java-программу, которая отслеживает время, когда спортсмен проходил 2 отдельных курса, курс по гравию и траве. Они имеют разную длину и особые условия. Однако они должны быть помещены в одну коллекцию. Я бы использовал ArrayList для этого, однако это второй курс Java, который нам дают, и, так как мы использовали ArrayList в прошлый раз, мы должны использовать что-то другое. 2 новых коллекции, которым они научили нас, это HashMap и HashSet. И я подумал, что буду использовать Hashmap, используя 2 типа треков в качестве ключей, и время, установленное бегунами в качестве значений. Но есть проблема. Хеш-карта может хранить только 1 значение на ключ, = 1 объект GrassRound или GravelRound на ключ. И я честно заблудился, как я могу решить это. Мы также узнали об обёртке, и я подумал, что смогу это использовать, однако не смог найти никакой информации о том, как добавить другой объект в обёртку после его первоначального создания.

Мой код (или то, что я хочудля достижения)

import java.sql.Wrapper;
import java.util.HashMap;

public class Athlete
{
    private String name;
    public HashMap<String, Wrapper> rounds;
    public Athlete(String name)
    {
        this.name = name;
        this.rounds = new HashMap<>();
    }
    public void addRound(String type, Round round)
    {
        switch(type)
        {
            case "grass":
                //Add a grass round to the Hashmap please
                break;
            case "gravel":
                //Add a gravel round to the Hashmap please
                break;
        }

    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }

    public HashMap<String, Wrapper> getRounds()
    {
        return rounds;
    }
}

Дополнительное примечание, GrassRound и GravelRound являются расширенными объектами из класса Round, поэтому я могу сказать моей программе, что она получит объект Round, а затем передать его либо объекту Gravel, либо Grassround. ? Изначально у меня было 2 метода, добавляющих газон или гравий, но им это не понравилось.

РЕДАКТИРОВАТЬ: Вот полный вопросник задания, поэтому у каждого есть соответствующий контекст:

Де Сперверс,В местном клубе легкой атлетики из Эммена в настоящее время есть большая бумажная администрация всех PR и дистанций их спортсменов. Чтобы избавиться от всей бумажной работы, они хотят, чтобы простое приложение регистрировало все данные. Для каждого спортсмена они хотят видеть, сколько раундов спортсмен пробежал в какое время. Доступны различные трассы: трасса для травы на 300 м и гравийная трасса на 400 м. Чтобы компенсировать сложность травяной трассы, время пробега на этой трассе будет сокращено на 5 секунд. Клуб также хочет знать трек рекордного клуба: спортсмен, которыйявляется самым быстрым на определенном треке. Для каждого спортсмена должны быть рассчитаны:

• Общее расстояние в км. • Среднее время на круг.

• Максимальная скорость (м / с).

• Общее время бега спортсмена.

Клуб хочет показать самого быстрого спортсмена и его / ее самый быстрый круг.

...