java8 lambda 数组_java8-lambda操作数组、集合

简介

“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

基本语句

Runnable noArguments = () -> System.out.println("Hello World");

ActionListener oneArgument = event -> System.out.println("button clicked");

Runnable multiStatement = () -> {

System.out.print("Hello");

System.out.println(" World");

};

BinaryOperator add = (x, y) -> x + y; q

BinaryOperator addExplicit = (Long x, Long y) -> x + y;

编写线程

Runnable runnable = () -> {

System.out.println("Lambda 创建线程");

};

Thread thread = new Thread(runnable);

thread.start();

利用Lambda运算

BinaryOperator add = (x, y) -> x + y;

Integer x = add.apply(20, 30);

统计数组中某元素出现的个数

String name[] = {"张三", "李四", "王五", "孙刘", "赵强", "李明", "赵强", "汪汪"};

long num = Arrays.stream(name).filter(x -> x.equals("赵强")).count();

数组去重并转化成集合存储

String name[] = {"张三", "李四", "王五", "孙刘", "赵强", "李明", "赵强", "汪汪"};

List stringList = Arrays.stream(name).filter(x -> !x.equals("赵强")).collect(toList());

数组去重,并对元素加后缀

String name[] = {"张三", "李四", "王五", "孙刘", "赵强", "李明", "赵强", "汪汪"};

List stringList2 = Arrays.stream(name).filter(x -> !x.equals("赵强")).map(y -> y + "加后缀:").collect(toList());

数组求和

int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 8, 9, 10 };

int count = 0;

// for循环

for (int i = 0; i < a.length; i++) {

count += a[i];

}

// foreach

count = 0;

for (int i = 0; i < a.length; i++) {

count += a[i];

}

// Lambda

int num = Arrays.stream(a).reduce(0, (b, c) -> b + c);

Lambda  的提取对象字段,并拼接

class User{

private String username;

private int age;

public User(){}

public User(String username, int age) {

this.username = username;

this.age = age;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

List userList = asList(new User("张三" , 10) , new User("李四" , 10) , new User("王五" , 13));

String result = userList.stream().map(User::getUsername).collect(Collectors.joining("," , "[" , "]"));

输出结果:[张三,李四,王五]

Lambda  groupBy

List userList = asList(new User("张三" , 10) , new User("李四" , 10) , new User("王五" , 13));

Stream userStream = userList.stream();

Map> integerStringMap = userStream.collect(groupingBy(user->user.getAge() , mapping(User::getUsername , toList())));

System.out.println(integerStringMap.toString());

输出结果:{10=[张三, 李四], 13=[王五]}

String result2 =

userList.stream().map(User::getUsername)

.reduce(new StringJoiner(",1 ", "[", "]"),

StringJoiner::add,

StringJoiner::merge)

.toString();

System.out.println(result2);

输出结果:[张三,1 李四,1 王五]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值