Java Lambda表达式判断List集合中连续两次D级或C级及以下评分
使用Java Lambda表达式判断List集合中连续两次D级或C级及以下评分
假设有一个List集合,其中泛型为一个对象,对象中包含一个字符串类型的评分属性,以及月份日期属性(格式为yyyy-MM),我们需要判断是否存在连续两次D级或者C及以下级别的数据,并获取其数量。
传统循环遍历方法
传统的循环遍历方法可以通过以下代码实现:
int count = 0;
for (int i = 0; i < list.size() - 1; i++) {
if ((list.get(i).getScore().equals('D') || list.get(i).getScore().equals('C'))
&& (list.get(i + 1).getScore().equals('D') || list.get(i + 1).getScore().equals('C'))) {
count++;
}
}
其中,getScore()是获取评分属性的方法。
Lambda表达式实现
使用Lambda表达式可以更简洁地实现上述功能:
int count = (int) IntStream.range(0, list.size() - 1)
.filter(i -> (list.get(i).getScore().equals('D') || list.get(i).getScore().equals('C'))
&& (list.get(i + 1).getScore().equals('D') || list.get(i + 1).getScore().equals('C')))
.count();
代码解释:
IntStream.range(0, list.size() - 1):生成一个从0到list.size()- 1的整数范围。filter(i -> (list.get(i).getScore().equals('D') || list.get(i).getScore().equals('C')) && (list.get(i + 1).getScore().equals('D') || list.get(i + 1).getScore().equals('C'))):筛选出满足条件的数据,即判断当前元素和下一个元素的评分是否都为'D'或'C'。count():统计符合条件的数据数量。
最终得到的count即为符合条件的数据数量。
通过Lambda表达式,我们可以更简洁高效地实现代码,提高代码的可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/oiee 著作权归作者所有。请勿转载和采集!