Добавить новый ключ-значение в существующую HashMap - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь добавить новый ключ / значение в существующий HashMap (bandMap), где второй аргумент в моем методе test () должен иметь тип Collection. Поскольку я все еще очень плохо знаком с Java, любая помощь с объяснением будет признательна.

import java.util.*; 
public class Car
{
private Map<String, Set<String>> carMap = new HashMap<>(); //b
Set<String> model = new TreeSet<>();
/**
* Constructor for a Band object
*/
public void make()//b
{
Map<String, Set<String>> carMap = new HashMap<>();
}

/**
* Populate some sample data
*/
public void populate() //b
{

  model.add("Fiesta");
  model.add("Cougar");
  model.add("Transit");
  carMap.put("Ford", model);

  model = new TreeSet<>();
  model.add("Astra");
  model.add("Calibra");
  carMap.put("Vauxhall", model);

  model = new TreeSet<>();
  model.add("206");
  model.add("106");
  carMap.put("Peugeot", model);

 }

/**
* I need a method to add a new key - value pair
*/   

public void test(String makeName, Set<String> aModel)
{
 //Code to add new Key/Value to the exisiting HashMap (carMap)
}
}

1 Ответ

0 голосов
/ 27 апреля 2018

Вам просто нужно carMap в качестве переменной класса. И в вашем методе test() (я переименовал его addModel) просто используйте метод put, как вы делаете это в методе populate.

public class Car {

    private Map<String, Set<String>> carMap = new HashMap<>();

    /**
     * Populate some sample data
     */
    public void populate() {

        Set<String> model = new TreeSet<>();
        model.add("Fiesta");
        model.add("Cougar");
        model.add("Transit");
        carMap.put("Ford", model);

        model = new TreeSet<>();
        model.add("Astra");
        model.add("Calibra");
        carMap.put("Vauxhall", model);

        model = new TreeSet<>();
        model.add("206");
        model.add("106");
        carMap.put("Peugeot", model);

    }

    public void addModel(String makeName, Set<String> aModel) {
        carMap.put(makeName, aModel);
    }

    public Map<String, Set<String>> getCarMap() {
        return carMap;
    }
}

Тогда используйте это так

public static void main(String[] args) {

    Car car = new Car();
    car.populate();
    car.addModel("AnotherBrand", new HashSet<>(Arrays.asList("a", "b")));
    System.out.println(car.getCarMap());

}

Выводит следующую карту

{
    Vauxhall=[Astra, Calibra], 
    Ford=[Cougar, Fiesta, Transit], 
    AnotherBrand=[a, b], 
    Peugeot=[106, 206]
}
...