stream的集合高级操作

package com.css.xtbgcloudnbgl.test;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.commons.compress.utils.Lists;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**

  • @Module xtbg-cloud

  • @Package com.css.xtbgcloudnbgl.test

  • @Description Java8中stream流的collectingAndThen方法应用实例

  • @Author Mjj

  • @Date 2022-09-23 14:30

  • @Version 1.0

  • @Reviewer 审核人

  • @History 修订历史(历次修订内容 、 修订人 、 修订时间等)
    */
    public class StreamCollctions {

    @Data
    public static class ExportTemperatureDto{
    private String name;
    private Double morningTemperature;
    private Double afternoonTemperature;
    private String classId;
    private String gradeId;
    private Integer personId;

     public ExportTemperatureDto(Integer personId,String name) {
     	this.name = name;
     	this.personId = personId;
     }
    

    }

    @Data
    @AllArgsConstructor
    public static class User {
    //用户Id
    int userId;
    //用户姓名
    String userName;
    //用户工资
    Double salary;
    }

    public static void main(String[] args) {

     //判断是否为Y
     boolean b = Stream.of(nbglLgsqEntity).allMatch(vo -> "Y".contains(vo.getYxbz()));
    
    
     /**此方法是在进行归纳动作结束之后,对归纳的结果进行二次处理。 去重id*/
     ArrayList<ExportTemperatureDto> collect = addExport().stream().collect(
     		Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ExportTemperatureDto::getPersonId))), ArrayList::new));
     collect.stream().forEach(System.out::println);
    
     /**查询工资最高的员工 的 姓名*/
     String collect1 = addUser().stream().collect(
     		Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(User::getSalary)), (Optional<User> user) -> user.map(User::getUserName).orElse("员工为空")));
     System.out.println(collect1);
    
     /**计算用户工资的平均值*/
     Double collect2 = addUser().stream().collect(Collectors.collectingAndThen(Collectors.averagingDouble(User::getSalary), Double::doubleValue));
     System.out.println(collect2);
    
     /**计算员工工资的求和*/
     double sum = addUser().stream().mapToDouble(User::getSalary).sum();
     System.out.println(sum);
    
     /**最值*/
     Double aDouble = addUser().stream().map(User::getSalary).min(Double::compareTo).get();
     System.out.println(aDouble);
     Double aDouble1 = addUser().stream().map(User::getSalary).max(Double::compareTo).get();
     System.out.println(aDouble1);
    
    
     String[] givenList = {"a", "bb", "ccc", "dd"};
     List<String> result = Arrays.asList(givenList).stream().collect(Collectors.toList());
     System.out.println(result);
    

    }

    public static List addExport() {
    ArrayList exp = Lists.newArrayList();
    exp.add(new ExportTemperatureDto(1,“haha”));
    exp.add(new ExportTemperatureDto(2,“haha”));
    exp.add(new ExportTemperatureDto(3,“haha”));
    exp.add(new ExportTemperatureDto(4,“haha”));

     exp.add(new ExportTemperatureDto(1,"hahass"));
     exp.add(new ExportTemperatureDto(2,"hahass"));
     return exp;
    

    }

    public static List addUser() {
    //数据准备
    User user1 = new User(1, “hangman”, 100d);
    User user2 = new User(1, “list”, 200d);
    User user3 = new User(2, “wing”, 200d);
    User user4 = new User(2, “zeal”, 100d);
    User user5 = new User(3, “tuba”, 300d);
    List userList = new ArrayList<>();
    userList.add(user1);
    userList.add(user2);
    userList.add(user3);
    userList.add(user4);
    userList.add(user5);
    return userList;
    }

}

stream返回boolean

// org.springframework.boot.logging.LoggingSystem
/**
 * Detect and return the logging system in use. Supports Logback and Java Logging.
 * @param classLoader the classloader
 * @return the logging system
 */
public static LoggingSystem get(ClassLoader classLoader) {
   
	String loggingSystem = System.getProperty(SYSTEM_PROPERTY);
	if (StringUtils.hasLength(loggingSystem)) {
   
		if (NONE.equals(loggingSystem)) {
   
			return new NoOpLoggingSystem();
		}
		return get(classLoader, loggingSystem);
	}
	return SYSTEMS.entrySet()
				   // 获取流对象
				  .stream()
				  // 过滤
				  .filter((entry) -> ClassUtils.isPresent(entry.getKey(), classLoader))
				  // 映射
			      .map((entry) -> get(classLoader, entry.getValue()))
			      // 返回第一个值
			      .findFirst()
			      // 不存在则抛出异常
				  .orElseThrow(() -> new IllegalStateException("No suitable logging system located"));
}
// org.springframework.boot.env.SpringApplicationJsonEnvironmentPostProcessor
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
   
	MutablePropertySources propertySources = environment.getPropertySources();
	propertySources.stream()
					// 映射
				   .map(JsonPropertyValue::get)
				    // 过滤掉空值
				   .filter(Objects::nonNull)
				   // 查找第一个(预期结果最多为一个的情况)
				   .findFirst()
				   // 如果存在值 则进行处理 不存在 则不产生影响
			       .ifPresent((v<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值