Java 8 Streams: List to Map with mapped values

lilalinux

I'm trying to create a Map from a List using Streams.

The key should be the name of the original item,

The value should be some derived data.

After .map() the stream consists of Integers and at the time of .collect() I can't access "foo" from the previous lambda. How do I get the original item in .toMap()?

Can this be done with Streams or do I need .forEach()?

(The code below is only for demonstration, the real code is of course much more complex and I can't make doSomething() a method of Foo).

import java.util.ArrayList;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class StreamTest {

    public class Foo {
        public String getName() {
            return "FOO";
        }

        public Integer getValue() {
            return 42;
        }
    }

    public Integer doSomething(Foo foo) {
        return foo.getValue() + 23;
    }

    public Map<String, Integer> run() {
        return new ArrayList<Foo>().stream().map(foo -> doSomething(foo)).collect(Collectors.toMap(foo.getName, Function.identity()));
    }

    public static void main(String[] args) {
        StreamTest streamTest = new StreamTest();
        streamTest.run();
    }
}
Ole V.V.

It appears to me it’s not that complicated. Am I missing something?

    return Stream.of(new Foo())
            .collect(Collectors.toMap(Foo::getName, this::doSomething));

I’m rather much into method references. If you prefer the -> notation, use

    return Stream.of(new Foo())
            .collect(Collectors.toMap(foo -> foo.getName(), foo -> doSomething(foo)));

Either will break (throw an exception) if there’s more than one Foo with the same name in your stream.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Java 8 streams intermediary map/collect to a stream with 2 values

Java 8 Streams: Iterate Over a List Inside a Map

List iteration & setting values with Java 8 Streams API

Grouping a List of Items using java 8 Streams and populating resulting Map with FIRST Item rather than List

converter List <E> em Map <String, List <String>> usando java 8 streams

Java 8 Streams: faça Collectors.groupingBy retornar Map <K, List <V>> em vez de Map <K, List <List <V> >>

Java 8 Streams: faça Collectors.groupingBy retornar Map <K, List <V>> em vez de Map <K, List <List <V> >>

Como converter List <Object []> em Map <String, BigInteger> com Streams e Lambda Java8

Java streams - getting a map from list of maps

Listar de List Streams JAVA8

Transformar um List <Object> a um Map <String, Integer> tal que a cadeia não é um valor duplicado usando Java 8 Streams

Using Java 8 streams groupingBy on a list of list of Strings?

Reescrever o loop tradicional para streams.map java 8

使用Java 8 Streams的Hash Map对象列表迭代

Usando streams Java 8 para modificar em List Java

Ordem Java Map <String, Integer> por List <String> usando streams

Java8 streams to find multiple values and return boolean

Hashmap com Streams no Java 8 Streams para coletar o valor do Map

Java 8 Streams - collect multiple Integer fields from list of objects

grouping and summing items of list using java 8 streams

Java 8 streams : For Each

Java - Retrive Indivudual Values from a List in a Map

Java streams list of objects

Java streams list of objects

Converter List <Map <Long, String >> em List <Long> Java 8

Filter a list of strings which contains one or more strings from another list with Java 8 streams

Java 8 streams: abreviação de myList.stream (). Map (Foo :: bar) .collect (Collectors.toList ())

Java 8 Streams map API - interpretação da referência do método

How to group List<Map<String,Object>> to Map<String,List<Map<String,Object>> in Java8

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo