Есть HashMap
, в котором ключу соответствует ArrayList
. Например:
фрукты: яблоки, апельсины, груши;
овощи : картофель и морковь.
hm
уже объявлен и мне необходимо сказать, что если попалась пара "фрукты - яблоки", то записать ее, если потом попалась пара "фрукты - груши", то записать груши к яблокам.
Как это сделать? Пишу на Java 7.
Если по данному ключу нет списка, то создавать список для данного ключа. Затем добавлять новую еду в список, полученный по ключу:
private static final HashMap<Integer, ArrayList<Food>> typeToFood = new HashMap<>();
private static void add(int type, Food food)
{
if (!typeToFood.containsKey(type))
{
typeToFood.put(type, new ArrayList<Food>());
}
typeToFood.get(type).add(food);
}
Полный пример:
private static class Food
{
public final String name;
public Food(String name)
{
this.name = name;
}
}
private static final int
FRUIT = 1,
VEGETABLE = 2;
private static final HashMap<Integer, ArrayList<Food>> typeToFood = new HashMap<>();
public static void main(String[] args)
{
add(FRUIT, new Food("apple"));
add(FRUIT, new Food("orange"));
add(VEGETABLE, new Food("potato"));
add(VEGETABLE, new Food("carrot"));
for (int type : typeToFood.keySet())
{
for (Food food : typeToFood.get(type))
{
System.out.print(food.name + " ");
}
System.out.println();
}
}
private static void add(int type, Food food)
{
if (!typeToFood.containsKey(type))
{
typeToFood.put(type, new ArrayList<Food>());
}
typeToFood.get(type).add(food);
}
При использовании Java 8 метод add
можно укоротить. Например, так:
private static void add(int type, Food food)
{
typeToFood.putIfAbsent(type, new ArrayList<>());
typeToFood.get(type).add(food);
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть библиотека, в ней, к примеру, есть такой класс:
Существует wsdl файл из которого я пытаюсь сгенерировать java классы при помощи утилиты wsimportГенерация завершается ошибкой: