可以使用Java 8的Lambda表达式和Stream API来遍历一个List<Map>集合,并根据其中的属性值进行分组。

假设List<Map>的元素是Map<String, String>类型,其中包含两个属性a和b。我们想要根据a属性值进行分组。

首先,我们可以使用Stream的collect()方法来将List转换为一个Map,其中键是a属性值,值是包含所有具有相同a属性值的Map的List。代码如下:

Map&lt;String, List&lt;Map&lt;String, String&gt;&gt;&gt; groupedMap = list.stream()
    .collect(Collectors.groupingBy(m -&gt; m.get("a")));

这将返回一个Map<String, List<Map<String, String>>>,其中键是a属性值,值是具有相同a属性值的Map的List。

完整示例代码如下:

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

public class Main {
    public static void main(String[] args) {
        List&lt;Map&lt;String, String&gt;&gt; list = new ArrayList&lt;&gt;();
        
        Map&lt;String, String&gt; map1 = new HashMap&lt;&gt;();
        map1.put("a", "group1");
        map1.put("b", "value1");
        list.add(map1);
        
        Map&lt;String, String&gt; map2 = new HashMap&lt;&gt;();
        map2.put("a", "group2");
        map2.put("b", "value2");
        list.add(map2);
        
        Map&lt;String, String&gt; map3 = new HashMap&lt;&gt;();
        map3.put("a", "group1");
        map3.put("b", "value3");
        list.add(map3);
        
        Map&lt;String, List&lt;Map&lt;String, String&gt;&gt;&gt; groupedMap = list.stream()
            .collect(Collectors.groupingBy(m -&gt; m.get("a")));
        
        // 遍历分组后的Map
        groupedMap.forEach((key, value) -&gt; {
            System.out.println("Group: " + key);
            value.forEach(System.out::println);
        });
    }
}

运行以上代码,输出为:

Group: group1
{a=group1, b=value1}
{a=group1, b=value3}
Group: group2
{a=group2, b=value2}

注意:以上示例假设List<Map>集合中的每个Map都包含"a"和"b"属性。如果属性名称不同或集合中的Map缺少某个属性,则需要相应地修改代码。

Java Lambda表达式:根据属性值对List<Map>集合进行分组

原文地址: https://www.cveoy.top/t/topic/p94v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录