首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java-8:流如何将Map<K、List<D>>转换为Map<D、List<K>>

Java 8中,可以使用流来将Map<K, List<D>>转换为Map<D, List<K>>。下面是一个示例代码和解释:

代码语言:txt
复制
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例的Map<K, List<D>>
        Map<String, List<Integer>> map = new HashMap<>();
        map.put("A", Arrays.asList(1, 2, 3));
        map.put("B", Arrays.asList(4, 5, 6));
        map.put("C", Arrays.asList(7, 8, 9));

        // 使用流将Map<K, List<D>>转换为Map<D, List<K>>
        Map<Integer, List<String>> resultMap = map.entrySet().stream()
                .flatMap(entry -> entry.getValue().stream()
                        .map(value -> new AbstractMap.SimpleEntry<>(value, entry.getKey())))
                .collect(Collectors.groupingBy(AbstractMap.SimpleEntry::getKey,
                        Collectors.mapping(AbstractMap.SimpleEntry::getValue, Collectors.toList())));

        // 输出转换后的结果
        System.out.println(resultMap);
    }
}

在上面的示例代码中,首先创建了一个示例的Map<K, List<D>>,其中键为String类型,值为Integer列表。然后使用流对Map进行转换,flatMap操作将Map中的每个键值对转换成一个新的键值对,新的键为Integer类型,值为原来的键。最后使用collect操作将转换后的结果收集到一个新的Map<D, List<K>>中。

输出结果为:

代码语言:txt
复制
{1=[A], 2=[A], 3=[A], 4=[B], 5=[B], 6=[B], 7=[C], 8=[C], 9=[C]}

这个转换操作适用于将一个包含多个键值对的Map转换为以原来的值为键,原来的键为值的新Map。这种转换在某些场景下很有用,比如需要通过值来查找对应的键。

腾讯云相关产品和产品介绍链接地址:

  1. 腾讯云云数据库Redis版:高性能、可扩展、分布式的缓存数据库,适合处理大量高并发读写操作。
  2. 腾讯云云服务器CVM:弹性可扩展的云服务器,提供灵活的计算资源供应。
  3. 腾讯云对象存储COS:安全可靠的对象存储服务,适用于存储和传输各种类型的文件数据。
  4. 腾讯云无服务器云函数SCF:按需运行的事件驱动计算服务,无需管理服务器,高效灵活。
  5. 腾讯云人工智能平台AI Lab:提供丰富的人工智能服务和工具,助力开发者构建智能应用。
  6. 腾讯云物联网套件IoT Hub:物联网设备接入与管理平台,提供安全可靠的设备连接和数据通信。
  7. 腾讯云移动推送信鸽:实时、稳定的移动消息推送服务,支持多种推送场景和方式。

请注意,以上产品和链接仅作为示例,具体选择和推荐应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券