使用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();

代码解释:

  1. IntStream.range(0, list.size() - 1):生成一个从0到list.size() - 1的整数范围。
  2. 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'。
  3. count():统计符合条件的数据数量。

最终得到的count即为符合条件的数据数量。

通过Lambda表达式,我们可以更简洁高效地实现代码,提高代码的可读性和可维护性。

Java Lambda表达式判断List集合中连续两次D级或C级及以下评分

原文地址: https://www.cveoy.top/t/topic/oiee 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录