从IntStream,Java 8返回LinkedHashMap

问题描述 投票:0回答:1

我有此代码。

  private static Map<Long, List<TimePitchValue>> alternativeMethod(AudioFormat audioformat, 
      List<ChunkDTO> listChunkDTO, long index, int sizeChunk) {

    int numBytesPerSample = audioformat.getSampleSizeInBits() / 8;
    int quantitySamples = sizeChunk / numBytesPerSample;
    long baseTime = quantitySamples * index;

    Map<Long, List<TimePitchValue>> mapListTimePitchValue = new LinkedHashMap<>();

    IntStream.range(0, quantitySamples).mapToObj(time -> {
      List<TimePitchValue> listTimePitchValue = listChunkDTO.stream().map(chunkDTO -> {
        int value = extractValue(chunkDTO.getChunk(), numBytesPerSample, time);
        return new TimePitchValue(chunkDTO.getPitch(), baseTime + time, value);
      }).collect(Collectors.toList());

      mapListTimePitchValue.put(baseTime + time, listTimePitchValue);

      return listTimePitchValue;
    });

    return mapListTimePitchValue;
  }

对于每个time值,将生成一个名称为List<TimePitchValue>listTimePitchValue,并且我希望将指定的listTimePitchValuebaseTime + time中的指定mapListTimePitchValue关联。

问题是,是否可以直接从Map<Long, List<TimePitchValue>>返回排序后的IntStream(以前没有创建Map<Long, List<TimePitchValue>> mapListTimePitchValue = new LinkedHashMap<>();,以后没有创建mapListTimePitchValue.put(baseTime + time, listTimePitchValue);

java-8 linkedhashmap generic-lambda intstream
1个回答
0
投票

这对您有用吗?

© www.soinside.com 2019 - 2024. All rights reserved.