1.filter(筛选)
筛选list中名字叫lisi的:
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
List<User> users = testFilter(userMapper.selectByMap(columnMap));
log.info(String.valueOf(users));
}
private List<User> testFilter(List<User> user){
//筛选名字叫lisi,返回list
return user.stream().filter(u ->"lisi".equals(u.getUserName())).collect(Collectors.toList());
}
2.map (转换)
在名字前面加上部分信息,只获取名字输出:
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step2:
List<String> uName = testMap(userMapper.selectByMap(columnMap));
uName.forEach(u -> log.info(u));
}
/**
* 集合转换
* @param users
* @return
*/
private List<String> testMap(List<User> users) {
//在名字前面加上部分信息,只获取名字输出
return users.stream().map(u ->"Name:"+u.getUserName()).collect(Collectors.toList());
}
3.distinct (去重)
实际有两个lisi
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step3:此testMap方法调用的上面2。
List<String> uName = testMap(userMapper.selectByMap(columnMap));
uName.stream().distinct().forEach(u -> log.info(u));
}
4.sorted (排序)
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step4:排序
List<String> uName = testSort(userMapper.selectByMap(columnMap));
uName.stream().sorted().forEach(u -> log.info(u));
}
/**
* 排序
* @param users
* @return
*/
private List<String> testSort(List<User> users) {
//获取realName
return users.stream().map(u ->u.getRealName()).collect(Collectors.toList());
}
5.limit(限制返回个数)
集合limit,返回前几个元素:
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step5:调用上面4方法,返回前两条
List<String> uName = testSort(userMapper.selectByMap(columnMap));
uName.stream().limit(2).forEach(u -> log.info(u));
}
6.skip (删除元素)
集合skip,删除前n个元素:
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step6:删除前2个元素
List<String> uName = testSort(userMapper.selectByMap(columnMap));
uName.stream().skip(2).forEach(u -> log.info(u));
}
7.reduce (聚合)
集合reduce,将集合中每个元素聚合成一条数据:
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step7:聚合,调用上面4方法
List<String> uName = testSort(userMapper.selectByMap(columnMap));
String reduceStr = uName.stream().reduce("REALNAME:",(a,b) -> a+b);
log.info(reduceStr);
}
8.min (求最小值)
求集合中元素的最小值:
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step8:求集合中元素的最小值
List<User> uName = userMapper.selectByMap(columnMap);
User user = uName.stream().min(Comparator.comparingInt(User::getId)).get();
log.info(user.toString());
}
max最大值同理。
9.anyMatch/allMatch/noneMatch (匹配)
@Override
public void testFilter(String passWord) {
Map<String,Object> columnMap = new HashMap<>();
//写表中的列名
columnMap.put("pass_word",passWord);
//step9:匹配
List<User> uName = userMapper.selectByMap(columnMap);
Boolean anyMatch = uName.stream().anyMatch(u ->"lisi".equals(u.getUserName()));
//任意一个元素符合传入的 predicate,返回 true
if (anyMatch) {
log.info("lisi存在!!!");
}
Boolean allMatch = uName.stream().allMatch(u -> u.getId()>=1);
//全部元素符合传入的 predicate,返回 true
if (allMatch) {
log.info("所有Id都大于等于1");
}
Boolean noneMatch = uName.stream().noneMatch(u -> "密码".equals(u.getPassWord()));
//没有一个元素符合传入的 predicate,返回 true
if (noneMatch) {
log.info("没有passWord='密码'");
}
}
总结:
anyMatch:Stream 中任意一个元素符合传入的 predicate,返回 true;
allMatch:Stream 中全部元素符合传入的 predicate,返回 true;
noneMatch:Stream 中没有一个元素符合传入的 predicate,返回 true。
有关Stream的其他操作参考下面: