List集合中的相邻元素是否满足升序排列

1、判断 List<BigDecimal>集合中的所有相邻元素是否满足升序排列(包括相等的数值)

        List<BigDecimal> bigDecimals = new ArrayList<BigDecimal>();
        bigDecimals.add(new BigDecimal("1"));
        bigDecimals.add(new BigDecimal("1"));
        bigDecimals.add(new BigDecimal("6"));
        bigDecimals.add(new BigDecimal("9"));
        Boolean con= continuousRise(bigDecimals);
        System.out.println(con); //结果为:true
//是否连续上升(包括等值)
public Boolean continuousRise(List<BigDecimal> list) {
        if (CollectionUtil.isEmpty(list)) {
            return false;
        }

        //如果所有相邻元素都满足升序排列(包括等值),则返回true,否则返回false。 
        return IntStream.range(0, list.size() - 1)
                .allMatch(i -> list.get(i).compareTo(list.get(i + 1)) <= 0);
}

1. 使用IntStream.range()方法创建一个从0到list.size()-1的整数范围,表示需要比较的相邻元素的下标。

2. 使用allMatch()方法遍历整数范围,判断相邻元素是否满足升序排列。

3. 使用lambda表达式作为参数传递给allMatch()方法,以便比较相邻元素的大小。

4. 在lambda表达式中,使用list.get()方法获取相邻元素的值,并使用compareTo()方法进行比较。

5. 如果所有相邻元素都满足升序排列,则返回true,否则返回false。 

2、判断 List<BigDecimal>集合中的所有相邻元素是否满足降序排列(包括相等的数值)

        List<BigDecimal> bigDecimals2 = new ArrayList<BigDecimal>();
        bigDecimals2.add(new BigDecimal(100));
        bigDecimals2.add(new BigDecimal(90));
        bigDecimals2.add(new BigDecimal(80));
        bigDecimals2.add(new BigDecimal(10));
        bigDecimals2.add(new BigDecimal(6));
        bigDecimals2.add(new BigDecimal(6));

        Boolean con2 = continuousDecline(bigDecimals2);
        System.out.println(con2);//结果为:true
    //是否连续下降(包括等值)
    public Boolean continuousDecline(List<BigDecimal> list) {

        if (CollectionUtil.isEmpty(list)) {
            return false;
        }
        //如果所有相邻元素都满足降序排列(包括等值),则返回true,否则返回false。 
        return IntStream.range(0, list.size() - 1)
                .allMatch(i -> list.get(i).compareTo(list.get(i + 1)) >= 0);
    }

 3、以上判断是包括相邻数据相等的情况,如果不包括相等的情况,如下改写

 //如果所有相邻元素都满足升序排列(不包括等值),则返回true,否则返回false。 
        return IntStream.range(0, list.size() - 1)
                .allMatch(i -> list.get(i).compareTo(list.get(i + 1)) < 0);

// 如果所有相邻元素都满足降序排列(不包括等值),则返回true,否则返回false。

return IntStream.range(0, list.size() - 1)
                .allMatch(i -> list.get(i).compareTo(list.get(i + 1)) > 0);

4、判断集合中的数据是否连续上升方式二:

public boolean continuousRise2(List<BigDecimal> list) {
    if (CollectionUtil.isEmpty(list)) {
        return false;
    }
    BigDecimal prev = list.get(0);
    for (int i = 1; i < list.size(); i++) {
        BigDecimal current = list.get(i);
        if (current.compareTo(prev) <= 0) { //<= 0 不包括等值情况; < 0 包括等值情况
            return false;
        }
        prev = current;
    }
     return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值