首页 > 编程知识 正文

lambda表达式遍历map,lambda表达式与函数式接口

时间:2023-05-03 19:49:49 阅读:270081 作者:3563

JAVA 8之后添加了lambda表达式一直没有系统学习 
先记录一下map 利用lambda表达式排序

import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;

import static java.util.Map.Entry.comparingByKey;
import static java.util.Map.Entry.comparingByValue;
import static java.util.stream.Collectors.toMap;

public class TestMap {
    public static void main(String[] args) {
        Map<String ,Integer> maps = new HashMap<>();
        maps.put("wzn",30);
        maps.put("xhf",29);
        maps.put("as", 1);
        maps.put("bj",21);
        System.out.println("未排序数据:" +maps.toString());
        LinkedHashMap collect1 = maps.entrySet().stream().sorted(comparingByValue()).collect(toMap(Map.Entry::getKey,Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
        System.out.println("正序排序数据:" +collect1.toString());
        LinkedHashMap<String, Integer> collect2 = maps.entrySet().stream().sorted(Collections.reverseOrder(comparingByValue())).collect(toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
        System.out.println("倒序排序数据:" +collect2.toString());
        LinkedHashMap collect3 = maps.entrySet().stream().sorted(comparingByKey()).collect(toMap(Map.Entry::getKey,Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
        System.out.println("按key 排序"+collect3.toString());
    }
}

思路整理:

利用map内部类entry 转换成stream流 sorted()方法继续排序(Map.Entry 下有提供好的排序方法 按照key /value排序)排序完成转换成map 利用linkedHashMap保证有序性。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。