Java8:Lambda

toMap 返回自身

//Function.identity() 就会返回 User 实体
Map<Long, User> idMap = messageAccounts.stream().collect(Collectors.toMap(User::getId, Function.identity()));

forEach 的简单写法

public static void main(String[] args) {
        List list = Lists.newArrayList(1, 2, 3, 4);
        list.forEach(item -> {
            System.out.print(item + " ");
        });
        //当逻辑比较简单,可以采取简化写法
        list.forEach(item -> System.out.print(item + " "));
    }

lamada 结合匿名内部类—— ()->{} 替代 new Runnable

如果匿名内部类还需要传递参数,那么就()->{}写入入参 (a,b)->{} 或者 (a)->{}

/**
     * lamada 匿名内部类 用法
     */
    @Test
    public void test1(){
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("你好");
            }
        });
        thread.start();

        //lamada 使用()-> 取代匿名内部类声明
        Thread thread2 = new Thread(()-> { System.out.println("你好");});
        thread2.start();
    }
   

结果
// 你好
// 你好

lamada rudece 用法:对集合进行累加操作

reduce 可以用于 集合便利操作,比如求求和

/**
     *  lamada reduce 连续便利操作
     */
    @Test
    public void test2(){
        List<Integer> list = Arrays.asList(1,2,3,4);
        // reduce((A值,B值) -> 函数)
        int sum = list.stream().reduce((preValue,nextValue) -> preValue + nextValue).get();
        System.out.println("sum="+sum);
    }

结果

sum=10

我们可以结合 map ,获得更复杂的功能
将结合中实体的某一个属性进行集中处理

@Test
    public void test3(){
        List<User> list = Lists.newArrayList(new User(1),new User(2),new User(3),new User(4));
        int ageSum = list.stream().map(User::getAge).reduce((preAge,nextAge)->preAge+nextAge).get();
        System.out.println("他们的年龄和="+ageSum);
    }

结果输出:

他们的年龄和=10

Java 线程安全的时间函数 LocalDate

用法直接查看 时间工具类
https://blog.csdn.net/bestcxx/article/details/84635754

集合类型判空

CollectionUtils.isNotEmpty(元素) 包含null,size=0等多种情况

List 拆分方法

List对象 拆分为10个一组

 List<List<String>> partions = Lists.partition(List对象,10);

直接调用方法 类::方法

如果在本类,可直接用 this

 List list=Lists.newArrayList();
        list.forEach(item->.方法1(item.getName));
        list.forEach(item->.方法2(item));
        list.forEach(::方法2);

类型转化 —— 其实就是调用方法

String::valueOf 表示 类.方法 ,自动将本对象放进去,用户类型转化或者 filter 中
比如本类则可以用 this::方法 进行过滤,方法要返回 true 或 false

List<String> itemReceiver=Lists.newArrayList();
//方法一:String转Integer 其实是在 map里调用 Integer.valueOf("")
itemReceiver.stream().map(Integer::valueOf).collect(Collectors.toList())
//方法二:String转Integer 其实是遍历调用 Integer.parseInt("")
Lists.transform(itemReceiver,Integer::parseInt)
类型转化的过程中增加 过滤
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;

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

public class Test {
    public static void main(String[] args) {

        Map<String,Long> map= Maps.newHashMap();
        map.put("a",1L);
        map.put("b",null);
        map.put("b",0L);

        List<String> list=map.values().stream().filter(item->(item!=null&&item>0)).map(String::valueOf).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(list));
    }
}

String 转 set

“111,222,333” 转 [“111”,“222”,“333”]

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Sets;

import java.util.Set;


public class Del {
    public static void main(String[] args) {
        String str="111,222,333";
        Set set = Sets.newHashSet(str.split(","));
        System.out.println(JSON.toJSONString(set));
    }
}

遍历、简单写法

Lists.newArrayList().forEach(item->{
     System.out.println(item);
 });
 Maps.newHashMap().forEach((k,v)->{
     System.out.println(k+":"+v);
 });
public static void main(String[] args) {
        List list = Lists.newArrayList(1, 2, 3, 4);
        list.forEach(item -> {
            System.out.print(item + " ");
        });
        //当逻辑比较简单,可以采取简化写法
        list.forEach(item -> System.out.print(item + " "));
    }
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页