Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个数字对的重叠范围_Java_List - Fatal编程技术网

Java 两个数字对的重叠范围

Java 两个数字对的重叠范围,java,list,Java,List,有没有简单的方法来定义两个数字对的重叠范围? 例如, Pair1=[360780] Pair2=[420800] 答案是[420780]确保间隔重叠 然后取两对的下界的最大值和上界的最小值 int lower = Math.max(myPair1.x1, myPair2.x1); int upper = Math.min(myPair1.x2, myPair2.x2); if(lower < upper) return new Pair(lower, upper) else t

有没有简单的方法来定义两个数字对的重叠范围? 例如, Pair1=[360780] Pair2=[420800]


答案是[420780]

确保间隔重叠

然后取两对的下界的最大值和上界的最小值

int lower = Math.max(myPair1.x1, myPair2.x1);
int upper = Math.min(myPair1.x2, myPair2.x2);

if(lower < upper)
  return new Pair(lower, upper)
else 
  throw new CustomException("Intervals not overlap")
int lower=Math.max(myPair1.x1,myPair2.x1);
int upper=Math.min(myPair1.x2,myPair2.x2);
if(下部<上部)
返回新对(下部、上部)
其他的
抛出新的CustomException(“间隔不重叠”)

确保间隔重叠

然后取两对的下界的最大值和上界的最小值

int lower = Math.max(myPair1.x1, myPair2.x1);
int upper = Math.min(myPair1.x2, myPair2.x2);

if(lower < upper)
  return new Pair(lower, upper)
else 
  throw new CustomException("Intervals not overlap")
int lower=Math.max(myPair1.x1,myPair2.x1);
int upper=Math.min(myPair1.x2,myPair2.x2);
if(下部<上部)
返回新对(下部、上部)
其他的
抛出新的CustomException(“间隔不重叠”)
这个怎么样:

int from = Math.max(pair1.getX(), pair2.getX());
int to = Math.min(pair1.getY(), pair2.getY());

if (from <= to) {
   return new Pair(from, to);
} else {
    return null;
}
intfrom=Math.max(pair1.getX(),pair2.getX());
int to=Math.min(pair1.getY(),pair2.getY());
如果(从开始)这个怎么样:

int from = Math.max(pair1.getX(), pair2.getX());
int to = Math.min(pair1.getY(), pair2.getY());

if (from <= to) {
   return new Pair(from, to);
} else {
    return null;
}
intfrom=Math.max(pair1.getX(),pair2.getX());
int to=Math.min(pair1.getY(),pair2.getY());

如果(从我会创建一个

class Range {
    final int start;
    final int end;
    private Range(int start; int end) { this.start = start; this.end = end; }
    public static Range of(int start, int end) { return new Range(start, end); }
    public Range and(Range r) {
        return new Range(Math.max(start, r.start), Math.min(end, r.end);
    }
}
你可以写

Range one = Range.of(360, 780);
Range two = Range.of(420, 800);
Range both = one.and(two);

我会创建一个类似

class Range {
    final int start;
    final int end;
    private Range(int start; int end) { this.start = start; this.end = end; }
    public static Range of(int start, int end) { return new Range(start, end); }
    public Range and(Range r) {
        return new Range(Math.max(start, r.start), Math.min(end, r.end);
    }
}
你可以写

Range one = Range.of(360, 780);
Range two = Range.of(420, 800);
Range both = one.and(two);

有些误用了
java.awt.geom
,请尝试:

public static double[] createIntersection(double[] a1, double[] a2) {
    Rectangle2D r1 = new Rectangle2D.Double(), r2 = new Rectangle2D.Double();
    r1.setFrameFromDiagonal(a1[0], 0, a1[1], 1);
    r2.setFrameFromDiagonal(a2[0], 0, a2[1], 1);
    Rectangle2D r3 = r1.createIntersection(r2);
    return new double[] { r3.getMinX(), r3.getMaxX() };
}

有些误用了
java.awt.geom
,请尝试:

public static double[] createIntersection(double[] a1, double[] a2) {
    Rectangle2D r1 = new Rectangle2D.Double(), r2 = new Rectangle2D.Double();
    r1.setFrameFromDiagonal(a1[0], 0, a1[1], 1);
    r2.setFrameFromDiagonal(a2[0], 0, a2[1], 1);
    Rectangle2D r3 = r1.createIntersection(r2);
    return new double[] { r3.getMinX(), r3.getMaxX() };
}

result={max(pair1[0],pair2[0])、min(pair1[1],pair2[1])}
检查第一个示例
result={max(pair1[0],pair2[0])、min(pair1[1],pair2[1])
检查第一个示例是否有快速方法检查间隔是否重叠?您必须检查新间隔的下限是否低于新间隔的上限是否有快速方法检查间隔是否重叠?您必须检查新间隔的下限是否低于t新间隔的上限不应该是
from,不应该是
from,如果没有重叠怎么办?@whoAmI在这种情况下
end
start
会得到一个无效的范围。如何处理它取决于您希望它做什么。它可能会在构造函数中引发异常。如果没有verlapping?@whoAmI在这种情况下,
end
start
会得到一个无效的范围。如何处理这个范围取决于您希望它做什么。它可能会在构造函数中引发异常。对于这样一个简单的任务来说,似乎是过度消耗。对于这样一个简单的任务来说,似乎是过度消耗。