java判断多个金额区间是否有重合
时间: 2023-09-21 18:13:38 浏览: 147
直线上最多的点数_java_
可以使用Java的BigDecimal和Range类来判断多个金额区间是否有重合。具体步骤如下:
1. 将金额区间转换为Range对象,使用BigDecimal作为Range的上下界。
2. 将所有的Range对象存储到List中。
3. 遍历List中的Range对象,对于每个Range对象,遍历其余Range对象,判断是否有重合。
4. 判断两个Range对象是否有重合,可以使用Range类的isConnected方法和intersection方法。
5. 如果有重合,返回true,否则返回false。
下面是一个简单的示例代码:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.Range;
public class RangeOverlapDemo {
public static void main(String[] args) {
List<Range<BigDecimal>> ranges = new ArrayList<>();
// 添加金额区间
ranges.add(Range.between(BigDecimal.ZERO, new BigDecimal("100")));
ranges.add(Range.between(new BigDecimal("50"), new BigDecimal("150")));
ranges.add(Range.between(new BigDecimal("100"), new BigDecimal("200")));
// 判断是否有重合
boolean hasOverlap = false;
for (int i = 0; i < ranges.size() - 1; i++) {
for (int j = i + 1; j < ranges.size(); j++) {
Range<BigDecimal> range1 = ranges.get(i);
Range<BigDecimal> range2 = ranges.get(j);
if (range1.isConnected(range2) && !range1.intersection(range2).isEmpty()) {
hasOverlap = true;
break;
}
}
if (hasOverlap) {
break;
}
}
System.out.println("是否有重合:" + hasOverlap);
}
}
```
在这个示例中,我们添加了三个金额区间,然后使用两层循环遍历所有的区间,判断是否有重合。最终输出了是否有重合的结果。
阅读全文