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


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

    1. List bigDecimals = new ArrayList();
    2. bigDecimals.add(new BigDecimal("1"));
    3. bigDecimals.add(new BigDecimal("1"));
    4. bigDecimals.add(new BigDecimal("6"));
    5. bigDecimals.add(new BigDecimal("9"));
    6. Boolean con= continuousRise(bigDecimals);
    7. System.out.println(con); //结果为:true
    1. //是否连续上升(包括等值)
    2. public Boolean continuousRise(List list) {
    3. if (CollectionUtil.isEmpty(list)) {
    4. return false;
    5. }
    6. //如果所有相邻元素都满足升序排列(包括等值),则返回true,否则返回false。 
    7. return IntStream.range(0, list.size() - 1)
    8. .allMatch(i -> list.get(i).compareTo(list.get(i + 1)) <= 0);
    9. }

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

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

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

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

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

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

    1. List bigDecimals2 = new ArrayList();
    2. bigDecimals2.add(new BigDecimal(100));
    3. bigDecimals2.add(new BigDecimal(90));
    4. bigDecimals2.add(new BigDecimal(80));
    5. bigDecimals2.add(new BigDecimal(10));
    6. bigDecimals2.add(new BigDecimal(6));
    7. bigDecimals2.add(new BigDecimal(6));
    8. Boolean con2 = continuousDecline(bigDecimals2);
    9. System.out.println(con2);//结果为:true
    1. //是否连续下降(包括等值)
    2. public Boolean continuousDecline(List list) {
    3. if (CollectionUtil.isEmpty(list)) {
    4. return false;
    5. }
    6. //如果所有相邻元素都满足降序排列(包括等值),则返回true,否则返回false。 
    7. return IntStream.range(0, list.size() - 1)
    8. .allMatch(i -> list.get(i).compareTo(list.get(i + 1)) >= 0);
    9. }

     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、判断集合中的数据是否连续上升方式二:

    1. public boolean continuousRise2(List list) {
    2. if (CollectionUtil.isEmpty(list)) {
    3. return false;
    4. }
    5. BigDecimal prev = list.get(0);
    6. for (int i = 1; i < list.size(); i++) {
    7. BigDecimal current = list.get(i);
    8. if (current.compareTo(prev) <= 0) { //<= 0 不包括等值情况; < 0 包括等值情况
    9. return false;
    10. }
    11. prev = current;
    12. }
    13. return true;
    14. }
  • 相关阅读:
    Web Audio API 第5章 音频的分析与可视化
    python基于django或flask开发的健身俱乐部网站rix1z
    Prometheus与Grafana监控SpringBoot应用
    大数据存储ClickHouse
    MySQL 与 PostgreSQL的区别
    UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
    【Linux】多进程——fork()创建进程及相关内容
    WebRTC系列-SDP之编码信息收集
    从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(1)
    【多线程初阶】多线程案例之阻塞式队列
  • 原文地址:https://blog.csdn.net/SUMMERENT/article/details/133983234