Stream的定义定义和基本概念
学了知识不运用,等于耕地不播种,话不多说,我们开始操作
foreach遍历集合(排除集合中的某一元素)(配合filter)
基础代码模型
public class TestList {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
list.add(new User(1,"zhangsan1"));
list.add(new User(2,"zhangsan2"));
list.add(new User(3,"zhangsan3"));
list.add(new User(4,"zhangsan4"));
}
}
//实体类
public class User {
private int id;
private String username;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public User(int id, String username) {
this.id = id;
this.username = username;
}
public User(){}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}';
}
}
foreach
foreach直接遍历list
list.stream().forEach(System.out::println);//先创建流,再遍历打印
输出结果
User{id=1, username='zhangsan1'}
User{id=2, username='zhangsan2'}
User{id=3, username='zhangsan3'}
User{id=4, username='zhangsan4'}
foreach遍历且去重
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
numbers.stream().distinct().forEach(System.out::println);
输出结果
3
2
7
5
foreach遍历集合中元素的某一属性(配合map)
list.stream().map(User::getUsername).forEach(System.out::println);
输出结果
zhangsan1
zhangsan2
zhangsan3
zhangsan4
foreach遍历集合(排除集合中的某一元素)(配合filter)
list.stream().filter(User->User.getUsername()!="zhangsan1").forEach(System.out::println);
输出结果
User{id=2, username='zhangsan2'}
User{id=3, username='zhangsan3'}
User{id=4, username='zhangsan4'}
foreach遍历集合元素中某一元素,组合成新的集合
list.stream().map(User::getUsername).collect(Collectors.toList()).forEach(System.out::println);
输出结果
zhangsan1
zhangsan1
zhangsan2
zhangsan3
zhangsan4
Map
map 方法用于映射每个元素到对应的结果
list.stream().map(user->user.getId()+1);//把list中的每一个元素对应到user或User或任意的变量
list.stream().map(User->User.getId()+1);
输出结果
2
3
4
5
filter
filter 方法用于通过设置的条件过滤出元素
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());//过滤出元素不为空的
输出结果
[abc, bc, efg, abcd, jkl]