Java 8 将Map转换为List

16 篇文章 1 订阅
14 篇文章 1 订阅

将一个Java示例转换MapList

Map<String, String> map = new HashMap<>();

// Convert all Map keys to a List
List<String> result = new ArrayList(map.keySet());

// Convert all Map values to a List
List<String> result2 = new ArrayList(map.values());

// Java 8, Convert all Map keys to a List
List<String> result3 = map.keySet().stream()
	.collect(Collectors.toList());

// Java 8, Convert all Map values  to a List
List<String> result4 = map.values().stream()
	.collect(Collectors.toList());

// Java 8, seem a bit long, but you can enjoy the Stream features like filter and etc.
List<String> result5 = map.values().stream()
	.filter(x -> !"apple".equalsIgnoreCase(x))
	.collect(Collectors.toList());

// Java 8, split a map into 2 List, it works!
// refer example 3 below

映射到List

为了简单MapList转换,只需使用下面的代码:

ConvertMapToList.java
package com.mkyong;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ConvertMapToList {

    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();
        map.put(10, "apple");
        map.put(20, "orange");
        map.put(30, "banana");
        map.put(40, "watermelon");
        map.put(50, "dragonfruit");

        System.out.println("\n1. Export Map Key to List...");

        List<Integer> result = new ArrayList(map.keySet());

        result.forEach(System.out::println);

        System.out.println("\n2. Export Map Value to List...");

        List<String> result2 = new ArrayList(map.values());

        result2.forEach(System.out::println);

    }

}

Output

1. Export Map Key to List...
50
20
40
10
30

2. Export Map Value to List...
dragonfruit
orange
watermelon
apple
banana

Java 8 - 映射到List

对于Java 8,您可以将其Map转换为流,将其处理并将其返回List

ConvertMapToList.java
package com.mkyong;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class ConvertMapToList {

    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();
        map.put(10, "apple");
        map.put(20, "orange");
        map.put(30, "banana");
        map.put(40, "watermelon");
        map.put(50, "dragonfruit");

        System.out.println("\n1. Export Map Key to List...");

        List<Integer> result = map.keySet().stream()
                .collect(Collectors.toList());

        result.forEach(System.out::println);

        System.out.println("\n2. Export Map Value to List...");

        List<String> result2 = map.values().stream()
                .collect(Collectors.toList());

        result2.forEach(System.out::println);

        System.out.println("\n3. Export Map Value to List..., say no to banana");
        List<String> result3 = map.keySet().stream()
                .filter(x -> !"banana".equalsIgnoreCase(x))
                .collect(Collectors.toList());

        result3.forEach(System.out::println);

    }

}

Output

1. Export Map Key to List...
50
20
40
10
30

2. Export Map Value to List...
dragonfruit
orange
watermelon
apple
banana

3. Export Map Value to List..., say no to banana
dragonfruit
orange
watermelon
apple

Java 8 - 将Map转换成List

这个例子有点极端,map.entrySet()用来转换MapList

ConvertMapToList.java
package com.mkyong;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

//https://www.mkyong.com/java8/java-8-how-to-sort-a-map/
public class ConvertMapToList {

    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();
        map.put(10, "apple");
        map.put(20, "orange");
        map.put(30, "banana");
        map.put(40, "watermelon");
        map.put(50, "dragonfruit");

        // split a map into 2 List
        List<Integer> resultSortedKey = new ArrayList<>();
        List<String> resultValues = map.entrySet().stream()
                //sort a Map by key and stored in resultSortedKey
                .sorted(Map.Entry.<Integer, String>comparingByKey().reversed())
                .peek(e -> resultSortedKey.add(e.getKey()))
                .map(x -> x.getValue())
                // filter banana and return it to resultValues
                .filter(x -> !"banana".equalsIgnoreCase(x))
                .collect(Collectors.toList());

        resultSortedKey.forEach(System.out::println);
        resultValues.forEach(System.out::println);

    }

}

Output

//resultSortedKey
50
40
30
20
10

//resultValues
dragonfruit
watermelon
orange
apple
### 回答1: 将List集合转换Map可以使用Java8中的streamlambda表达式来实现,代码如下: ```java List<MyObject> list = new ArrayList<>(); // 假设MyObject类中有getId()和getName()方法 Map<Integer, String> map = list.stream().collect(Collectors.toMap(MyObject::getId, MyObject::getName)); ``` 该代码将List<MyObject>转换为一个Map<Integer, String>,其中MyObject中的id属性作为Map的key,name属性作为Map的value。如果MyObject类中没有getId()或getName()方法,可以替换为相应的getter方法。 ### 回答2: 在Java中,我们可以将List集合转换Map。下面是一种常见的转换方法: 1. 首先,声明一个空的Map对象,用于存储将要转换List中的元素。 ```java Map<Object, Object> map = new HashMap<>(); ``` 2. 遍历List集合,将每个元素分别添加到Map中。 如果List中的元素是一个自定义对象,我们可以根据对象的某个属性值作为键,对象本身作为值,将其添加到Map中。假设自定义对象的属性为"id"和"name"。 ```java for (CustomObject obj : list) { map.put(obj.getId(), obj); } ``` 如果List中的元素是简单类型(如String、Integer等),我们可以将每个元素作为键和值添加到Map中。 ```java for (Object element : list) { map.put(element, element); } ``` 3. 完成遍历后,Map中即保存了List中的所有元素,可通过键进行快速查找、获取对应的值。 例如,通过键获取List中某个元素的值: ```java Object value = map.get(key); ``` 注意事项: - 如果List中有重复的键,那么后添加的元素会覆盖前面的元素。 - 使用HashMap进行转换时,键是无序的。如有需要,可以使用LinkedHashMap等有序的Map实现类。 这样,我们就可以将List集合转换Map,并根据实际需求快速查找、处理元素了。 ### 回答3: 在Java中,可以通过以下步骤将List集合转换Map: 1. 创建一个空的Map对象,用于存储List中的元素。 2. 遍历List集合中的每个元素。 3. 对于每个元素,从中取出键和值,并以键值对的形式存储到Map中。 4. 遍历完所有元素后,Map就包含了List集合中的所有元素。 5. 最后,返回转换后的Map对象。 下面是一个示例代码: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListToMapExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("key1=value1"); list.add("key2=value2"); list.add("key3=value3"); Map<String, String> map = new HashMap<>(); for (String element : list) { String[] parts = element.split("="); String key = parts[0]; String value = parts[1]; map.put(key, value); } System.out.println(map); } } ``` 在这个例子中,我们创建了一个包含三个元素的List集合。然后,我们创建了一个空的Map对象,通过遍历List中的每个元素,将键和值存储到Map中。最后,我们打印出了转换后的Map对象。 输出结果为:{key3=value3, key2=value2, key1=value1}。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值