Java:JDK8中Stream的用法
发布时间:2023-09-14 12:06:38 198
相关标签:
(目录)
筛选
需求:
- 筛选出年龄大于20的人
实体类 User.java
package com.example.demo;
public class User {
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
使用for循环
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
// 筛选出年龄大于20的人
List newUserList = new ArrayList<>();
for (User user : userList) {
if (user.getAge() > 20) {
newUserList.add(user);
}
}
System.out.println(newUserList);
// [User{name='刘备', age=40}, User{name='关羽', age=30}]
}
}
使用Stream
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Demo {
public static void main(String[] args) {
List userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
// 筛选出年龄大于20的人
List newUserList = userList
.stream()
.filter(u -> u.getAge() > 20)
.collect(Collectors.toList());
System.out.println(newUserList);
// [User{name='刘备', age=40}, User{name='关羽', age=30}]
}
}
循环
JDK7
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
for (User user : userList) {
System.out.println(user);
}
// User{name='刘备', age=40}
// User{name='关羽', age=30}
// User{name='张飞', age=20}
}
}
JDK8
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
userList.stream().forEach(u -> {
System.out.println(u);
});
// 或者
// userList.forEach(u -> {
// System.out.println(u);
// });
// User{name='刘备', age=40}
// User{name='关羽', age=30}
// User{name='张飞', age=20}
}
}
聚合函数
需求:
- 获取List
中字符串最长的那个
JDK7
package com.example.demo;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
String[] strArr = new String[]{"a", "bb", "ccc"};
List list = Arrays.asList(strArr);
String max = Collections.max(list, new Comparator() {
@Override
public int compare(String o1, String o2) {
if (o1.length() < o2.length()) {
return -1;
} else if (o1.length() > o2.length()) {
return 1;
} else {
return o1.compareTo(o2);
}
}
});
System.out.println(max);
// ccc
}
}
JDK8
package com.example.demo;
import java.util.*;
public class Demo {
public static void main(String[] args) {
String[] strArr = new String[]{"a", "bb", "ccc"};
List list = Arrays.asList(strArr);
Optional max = list.stream()
.max(Comparator.comparing(String::length));
System.out.println(max.get());
// ccc
}
}
count
package com.example.demo;
import java.util.*;
public class Demo {
public static void main(String[] args) {
// 获取List中大于2的元素的个数
List list = Arrays.asList(1, 2, 3);
long count = list.stream()
.filter(x -> x > 2)
.count();
System.out.println(count);
// 1
}
}
Map
需求:
- 获取List中的name 数据
JDK7
package com.example.demo;
import java.util.*;
public class Demo {
public static void main(String[] args) {
List userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
List names = new ArrayList<>();
for (User user : userList) {
names.add(user.getName());
}
System.out.println(names);
// [刘备, 关羽, 张飞]
}
}
JDK8
package com.example.demo;
import java.util.*;
import java.util.stream.Collectors;
public class Demo {
public static void main(String[] args) {
List userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
List names = userList.stream()
.map(User::getName)
.collect(Collectors.toList());
System.out.println(names);
// [刘备, 关羽, 张飞]
}
}
参考 别再问问JDK的Stream怎么用了好么?面试官
文章来源: https://blog.51cto.com/mouday/5879767
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报