数据准备
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private String userName;
private String password;
}
public List<User> getUsers() {
List<User> list = new ArrayList<>();
list.add(User.builder().userName("张三").password("123456").build());
list.add(User.builder().userName("王小").password("123456").build());
list.add(User.builder().userName("王二").password("123456").build());
list.add(User.builder().userName("麻子").password("123456").build());
list.add(User.builder().userName("大飞").password("123456").build());
list.add(User.builder().userName("小天").password("123456").build());
list.add(User.builder().userName("三六").password("123456").build());
list.add(User.builder().userName("飞虎").password("123456").build());
list.add(User.builder().userName("大鬼").password("123456").build());
list.add(User.builder().userName("小品").password("123456").build());
list.add(User.builder().userName("篮球").password("123456").build());
return list;
}
方法使用
- filter 过滤
@Test
public void testFilter() {
List<User> list = getUsers();
//过滤出用户名为王二的
List<User> userList = list.stream().filter(item -> "王二".equals(item.getUserName())).collect(Collectors.toList());
System.out.println("过滤到的数据:" + userList);
}
结果:
- map 取出集合中的某一个字段组成集合
@Test
public void testMap() {
List<User> list = getUsers();
//拿到所有的用户名字
List<String> userNameList = list.stream().map(User::getUserName).collect(Collectors.toList());
System.out.println("所有的用户名:" + userNameList);
}
结果:
- distinct 去重
@Test
public void testDistinct() {
List<User> list = getUsers();
List<User> collect = list.stream().distinct().collect(Collectors.toList());
System.out.println("去除重复的数据:" + collect);
}
结果:
- limit 截取
@Test
public void testLimit() {
List<User> list = getUsers();
List<User> userList = list.stream().limit(3).collect(Collectors.toList());
System.out.println("截取前三条数据:" + userList);
}
结果:
- skip 排除前几条数据
@Test
public void testSkip() {
List<User> list = getUsers();
List<User> userList = list.stream().skip(2).collect(Collectors.toList());
System.out.println("去除前两条数据:" + userList);
}
结果: