1 stream()
1.1 stream().filter()
stream().filter()一般适用于list集合,主要作用就是条件查询,从集合中查询想要的数据。filter里面的参数user是指集合里面的每一项
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author LanceQ
* @date 2021年08月14日 12:53
*/
public class StreamDemo {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
//创建3个对象
User u1 = new User();
u1.setAge(23);
u1.setName("xiaoming");
u1.setId(123456);
User u2 = new User();
u2.setAge(26);
u2.setName("xiaofang");
u2.setId(23456);
User u3 = new User();
u3.setAge(18);
u3.setName("honghong");
u3.setId(845113);
//添加对象到集合
list.add(u1);
list.add(u2);
list.add(u3);
//条件筛选
compare(list);
}
private static void compare(List<User> list) {
//在集合中查询用户名为xiaofang的集合
List<User> userList=list.stream().filter(user -> "xiaofang"
.equals(user.getName())).collect(Collectors.toList());
System.out.println(list);
System.out.println(userList);
List<User> userList1=list.stream().filter(user -> user.getAge()>19&&user.getAge()<24).collect(Collectors.toList());
System.out.println(userList1);
}
}
filter:筛选(里面输入的筛选的条件( user -> “xiaofang”.equals(user.getName()) )),这里的条件是查询uesr对象中name属性。
[User{id=123456, name='xiaoming', age=23}, User{id=23456, name='xiaofang', age=26}, User{id=845113, name='honghong', age=18}]
[User{id=23456, name='xiaofang', age=26}]
[User{id=123456, name='xiaoming', age=23}]
1.2 stream().map()
- stream().map()提取List对象的某一列值。然后可以通过该对象进行循环输出
private static void printList(List<User> list) {
List<String> userList=list.stream().map(User::getName).collect(Collectors.toList());
userList.forEach(u -> System.out.println(u));
}
- distinct() 对map获取的值进行去重
public class StreamDemo {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
//创建4个对象
User u1 = new User();
u1.setAge(23);
u1.setName("xiaoming");
u1.setId(123456);
User u2 = new User();
u2.setAge(26);
u2.setName("xiaofang");
u2.setId(23456);
User u3 = new User();
u3.setAge(18);
u3.setName("honghong");
u3.setId(845113);
User u4 = new User();
u4.setAge(18);
u4.setName("xiao18");
u4.setId(895563);
//添加对象到集合
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
System.out.println(list);
//去重
printDistinctList(list);
}
private static void printDistinctList(List<User> list) {
List<Integer> ageList=list.stream().map(User::getAge).distinct().collect(Collectors.toList());
//遍历链表
ageList.forEach(a->System.out.println(a));
}
}
1.3 stream().sorted()
stream().sorted()对list集合进行排序
- 对id进行升序排序
private static void printSortList(List<User> list) {
List<User> userList=list.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
userList.forEach(u->System.out.println(u));
}
运行结果:
[User{id=123456, name='xiaoming', age=23}, User{id=23456, name='xiaofang', age=26}, User{id=845113, name='honghong', age=18}, User{id=895563, name='xiao18', age=18}]
User{id=23456, name='xiaofang', age=26}
User{id=123456, name='xiaoming', age=23}
User{id=845113, name='honghong', age=18}
User{id=895563, name='xiao18', age=18}
- 对id进行降序排序
private static void printSortList(List<User> list) {
//降序排序
List<User> userList=list.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
userList.forEach(u->System.out.println(u));
}
- age升序,id降序
private static void printSortList(List<User> list) {
//age升序,id降序
List<User> userList=list.stream()
.sorted(Comparator.comparing(User::getAge).thenComparing(User::getId).reversed())
.collect(Collectors.toList());
userList.forEach(u->System.out.println(u));
}
运行结果:
[User{id=123456, name='xiaoming', age=23}, User{id=23456, name='xiaofang', age=26}, User{id=845113, name='honghong', age=18}, User{id=895563, name='xiao18', age=18}]
User{id=23456, name='xiaofang', age=26}
User{id=123456, name='xiaoming', age=23}
User{id=895563, name='xiao18', age=18}
User{id=845113, name='honghong', age=18}
2 全部代码
public class User {
private Integer id;
private String name;
private int age;
public User() {
}
public User(Integer id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author LanceQ
* @date 2021年08月14日 12:53
*/
public class StreamDemo {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
//创建4个对象
User u1 = new User();
u1.setAge(23);
u1.setName("xiaoming");
u1.setId(123456);
User u2 = new User();
u2.setAge(26);
u2.setName("xiaofang");
u2.setId(23456);
User u3 = new User();
u3.setAge(18);
u3.setName("honghong");
u3.setId(845113);
User u4 = new User();
u4.setAge(18);
u4.setName("xiao18");
u4.setId(895563);
//添加对象到集合
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
System.out.println(list);
//排序
printSortList(list);
//去重
//printDistinctList(list);
//获取某一列输出
//printList(list);
//条件帅选
// compare(list);
}
private static void printSortList(List<User> list) {
//升序排序
//List<User> userList=list.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
//降序排序
//List<User> userList=list.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
//age升序,id降序
List<User> userList=list.stream()
.sorted(Comparator.comparing(User::getAge).thenComparing(User::getId).reversed())
.collect(Collectors.toList());
userList.forEach(u->System.out.println(u));
}
private static void printDistinctList(List<User> list) {
List<Integer> ageList=list.stream().map(User::getAge).distinct().collect(Collectors.toList());
ageList.forEach(a->System.out.println(a));
}
private static void printList(List<User> list) {
List<String> userList=list.stream().map(User::getName).collect(Collectors.toList());
userList.forEach(u -> System.out.println(u));
}
private static void compare(List<User> list) {
//在集合中查询用户名为xiaofang的集合
List<User> userList=list.stream().filter(user -> "xiaofang"
.equals(user.getName())).collect(Collectors.toList());
System.out.println(list);
System.out.println(userList);
List<User> userList1=list.stream().filter(user -> user.getAge()>19&&user.getAge()<24).collect(Collectors.toList());
System.out.println(userList1);
}
}
参考:
https://www.cnblogs.com/aitiknowledge/p/12806753.html
https://www.cnblogs.com/codecat/p/10903936.html
https://www.cnblogs.com/codecat/p/10873757.html