遇到个c#代码,不清楚要怎么转成java的写法,对java stream的实现不是很熟悉,求大佬指导
c#代码
/// <summary>
/// val求和统计方法
/// </summary>
/// <param name="source">时序数据集合</param>
/// <returns></returns>
public static List<TimingData> SumCalculate(this IEnumerable<TimingData> source)
{
var result = source.GroupBy(g => g.id)
.Select(t => new TimingData
{
//这里是根据 TimingData类的time字段排序,并返回第一个obj的id
id = t.OrderByDescending(p => p.time).First().id,
//这里是根据 TimingData类的time字段排序,并返回第一个obj的time
time = t.OrderByDescending(p => p.time).First().time,
//这里是返回 TimingData类的val字段的总和
val = t.Sum(p => p.val)
}).ToList();
return result;
}
以下是TimingData的类
@Data
public class TimingData<Tid, Tval> {
public String id;
/**
* 数据开始时间
*/
public Date beginTime;
public Date time;
/// <summary>
/// 时序值
/// </summary>
public Tval val;
/// <summary>
/// 时序值2开始时间
/// </summary>
public Date BeginTime2;
/// <summary>
/// 时序值2
/// </summary>
public Tval val2;
public String WaterPotential;
public String WaterPotential2;
public Tval capacity;
public Tval OutVal;
public Tval InVal;
/// <summary>
/// 量级编号(通用接口key=select_grade_level_list)
/// </summary>
public int LevelIndex;
/// <summary>
/// 量级名称(通用接口key=select_grade_level_list)
/// </summary>
public String LevelName;
/// <summary>
/// 量级值(通用接口key=select_grade_level_list)
/// </summary>
public String LevelValue;
/// <summary>
/// 数量
/// </summary>
public int count;
public TimingData(String id, Date time, Tval val) {
this.id = id;
this.time = time;
this.val = val;
}
}