Usando argumentos Map no construtor

Eu tenho uma classe, Studentcom este construtor.

 public Student(String name, int age, Map<String, Integer> grades) {
    this.setName(name);
    this.setAge(age);
    this.setGrades(grades);
 }

ao criar um objeto Student, como passo o argumento Map no construtor?

O que estou procurando é algo semelhante a este:

List<Student> roster = new ArrayList<>();
roster.add(new Student("Ann Droid", 145, Arrays.asList(96, 78)));

Se eu tivesse esse construtor:

public Student(String name, int age, List<Integer> grades) {
    this.setName(name);
    this.setAge(age);
    this.setGrades(grades);
 }
Resposta 1

O Java simples com sabor de baunilha não tem nada para o Maps como Arrays.asList(). Portanto, você precisará inicializar Mapvárias linhas de código como esta:

Map<String, Integer> grades = new HashMap<String, Integer>();
grades.put("English", 90);
roster.add(new Student("Ann Droid", 145, grades);

No entanto, com o Guava do Google, você pode fazer o seguinte:

Map<String, Integer> grades = ImmutableMap.of("English", 90);
Resposta: 2

Você pode fazer com que um utilitário funcione sozinho. Porém, não é muito seguro para o tipo, porque você precisa contornar a digitação para (ab) usar o parâmetro varags.

public class MapExample
{
    public static <K, V> Map<K, V> map(Object... objects)
    {
        Map<K, V> map = new HashMap<>();
        for (int n = 0; n < objects.length; n += 2)
        {
            map.put((K)objects[n], (V)objects[n + 1]);
        }
        return map;
    }

    public static void main(String[] args)
    {
        System.out.println(map("AAA", 123, "BBB", 456));
    }
}
Resposta: 3

Como posso usar o geckodriver para a versão beta do selenium webdriver 3.0? Quando instanciamos o Firefox, como: Driver WebDriver = new FirefoxDriver (); System.setProperty ("webdriver.gecko.driver", "// lib // ...

Eu defini o Comparator na classe Mobile para comparação. Comparando critérios, usei o campo id do Mobile. O Eclipse mostra um erro para o primeiro (hashSet) :( erro de sintaxe) enquanto para o conjunto de árvores ...

Estou testando o suporte ao FCF (Fast Connection Failover) do Oracle Universal Connection Pool (UCP) versão 11.2.0.1.0. O cenário que está sendo testado é um evento de interrupção planejada. Banco de Dados Oracle 11g ...

Eu sei que você pode criar 2 variáveis ​​de referência de objeto, como: Livro b; Livro c; E então crie 2 objetos e faça as variáveis ​​de referência apontarem para eles: b = new Book (); c = novo livro (); Então agora há ...