采用java8Stream对集合进行处理

//测试数据
        List<Map<Integer,Object>> list=new ArrayList<>();
        list.add((Map<Integer, Object>) new HashMap<>().put(222,"222"));
        list.add((Map<Integer, Object>) new HashMap<>().put(111,"111"));
        //筛选数据
        List<Map<Integer,Object>> a=list.stream().filter(info -> info.get("key").equals("123")).collect(Collectors.toList());
        //排序 针对String排序系统给出了更好的解决方案,如list中为自定义对象可通过以下方法进行排序
        list=list.stream().sorted(Comparator.comparing(Map::keySet)).collect(Collectors.toList());//升序
        list=list.stream().sorted(Comparator.comparing(Map::keySet).reversed()).collect(Collectors.toList());//降序
        //遍历集合进行操作,{}内可写入大量代码块
        list.forEach((Map<Integer, Object> info)->{info.put(333,"333");});
        //筛选出来的数据条数
        System.out.println(list.stream().filter(info->info.equals("123")).count());
* 当前只列举出了本人近期使用频率较高的几种语法,如无特殊的业务逻辑,以上几种的组合使用已经可以在一定程度上减少大量的开发代码
* 后续如遇到其他使用频率较高的写法会持续更新进来

采用java8新特性实现自定义lambda编程

* lambda语法 Lambda允许把函数作为一个方法的参数传递进方法中
* 适用场景:在一个大块的共用逻辑中间,穿插一块非共用的逻辑,在java8之前也可以采用传入某个字段在适当位置通过switch语句进行区分
* lambda可以应用到很多的业务场景中,本文只简要说明本人所遇到的业务场景
* 代码换环境执行一定要注意jdk的版本是否大于等于1.8
import org.junit.Test;

/**
 * @ClassName LambdaTest
 * @Author justin.Sun
 * @Date 2019/2/18 10:18
 **/
public class LambdaTest {

    //声明接口
    interface  Executor{
        String execute(String arg);
    }

    //调用时需要传入代码块的方法
    private Object runExecute(Executor executor,String arg){
        // TODO: 2019/2/18 公用代码块...

        //传入arg参数并执行代码块
        return executor.execute(arg);
    }

    @Test
    public void test(){
        //传入参数
        String param="test";
        //{}中的代码块相当于实现了上面定义的接口中的方法
        System.out.println(runExecute((String arg)->{return getResult(arg);},param));
    }

    //传入的代码块
    public String getResult(String arg){
        String result=arg;
        // TODO: 2019/2/18 逻辑块...
        return result;
    }
}
* 对于自定义lambda本人也尚处于初步阶段,上文仅用于记录,如有不正之处还请指正