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;
}