Конвертация List в Map

Есть такой клас:

public class Anima{

  public List<String> name;
}

Хочу поместить все name с Animal в Map<String, Integer>. Есть имя но хочу указать уникальный ид.

Как написать в Java 8 вот такое, условие класс Animal нельзя менять:

for(int i = 0; i < animal.name.size(); i++) {
    mapOfAnimal.put(animal.name.get(i), i);
}

Ответы (1 шт):

Автор решения: Alexandr

В случае, если нужно просто воспроизвести Вашу логику используя Stream API, то код будет выглядеть следующим образом:

package com.somepackage;

import lombok.Builder;
import lombok.Getter;

import java.util.List;
import java.util.stream.IntStream;

import static java.util.stream.Collectors.toMap;

public class Main {

    @Builder
    @Getter
    public static class Animal {
        public List<String> names;
    }

    public static void main(String[] args) {
        var animal =
                Animal.builder()
                        .names(List.of("Cat", "Dog", "Hamster"))
                        .build();
        var result =
                IntStream.range(0, animal.getNames().size())
                    .boxed()
                    .collect(
                            toMap(
                                    i -> animal.getNames().get(i), 
                                    i -> i));
        System.out.println(result);
    }

}

Результат:

{Cat=0, Dog=1, Hamster=2}
→ Ссылка