一:概述

Java Map是一种数据结构,它存储键值对(key-value pairs),键和值都是对象。Map中的键必须是唯一的,所以通过键可以快速定位对应的值。在Java中,Map主要有两种类型:HashMap和TreeMap。 在处理Map时,有时需要交换Map中的键和值,这可以通过多种方法实现。下面我将介绍几种常见的方法,每种方法都附带有实际的案例。

二:具体说明

<1>方法一:使用临时Map进行交换

使用临时Map进行交换 这种方法使用一个临时的Map来存储交换后的键值对,然后将临时Map的键和值重新放回原始的Map中。

public class MapSwapExample {
      public static void main(String[] args) {
         // 1.创建一个Map集合
         Map<String,String> map = new HashMap<String,String>();
         map.put("1","南京");
         map.put("2","天津");
         map.put("3","上海");
         map.put("4","北京");

         // 创建一个临时Map用于存储交换后的键值对
          Map<String,String> tempMap = new HashMap<String,String>();

         // 遍历原始的Map集合,并将键值对交换后放入临时的Map中
         for(Map.Entry<String,String> entry: map.entrySet()) {
             tempMap.put(entry.getValue(),entry.getKey());
         }
         // 清空原始Map
          map.clear();

         // 将临时的Map键值对重新放回原始的Map中
         for(Map.Entry<String,String> entry : tempMap.entrySet()) {
                map.put(entry.getKey(),entry.getValue());
         }

         // 输出交换后的Map
         for(Map.Entry<String,String> entry: map.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
         }

      }

Java交换map的key和value值_Java

<2>方法二:使用Collections.reverseOrder()方法进行交换

这种方法利用Collections.reverseOrder()方法对原始Map的键进行降序排序,然后将排序后的键和原始的值重新放回Map中。

public static void main(String[] args) {
        // 创建一个Map对象
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "One");
        map.put(2, "Two");
        map.put(3, "Three");

        // 创建一个新的Map对象
        Map<Integer, String> newMap = new TreeMap<>(Collections.reverseOrder());

        // 将原始Map的键和值交换放入新的Map中
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            newMap.put(entry.getKey(), entry.getValue());
        }

        // 输出交换后的Map
        for (Map.Entry<Integer, String> entry : newMap.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }
}

<3>方法三:使用Stream API进行交换

这种方法使用Java 8引入的Stream API,通过对原始Map的键值对进行映射和交换来实现。

import java.util.*;

public class MapSwapExample {
    public static void main(String[] args) {
        // 创建一个Map对象
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "One");
        map.put(2, "Two");
        map.put(3, "Three");

        // 使用Stream API进行键值对的映射和交换
        Map<String, Integer> swappedMap = map.entrySet().stream()
                .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));

        // 输出交换后的Map
        for (Map.Entry<String, Integer> entry : swappedMap.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }
}

以上是三种常用的方法来交换Map的键和值。每种方法都可以根据具体的需求选择使用。希望这些实际案例可以帮助你更好地理解和应用这些方法。