package com.github.davidmoten.rtree.geometry;
import java.util.List;
/**
*
* Not thread safe.
*
* @param <T>
* list type
*/
public final class ListPair<T extends HasGeometry> {
private final Group<T> group1;
private final Group<T> group2;
// these non-final variable mean that this class is not thread-safe
// because access to them is not synchronized
private float areaSum = -1;
private final float marginSum;
public ListPair(List<T> list1, List<T> list2) {
this.group1 = new Group<T>(list1);
this.group2 = new Group<T>(list2);
this.marginSum = group1.geometry().mbr().perimeter() + group2.geometry().mbr().perimeter();
}
public Group<T> group1() {
return group1;
}
public Group<T> group2() {
return group2;
}
public float areaSum() {
if (areaSum == -1)
areaSum = group1.geometry().mbr().area() + group2.geometry().mbr().area();
return areaSum;
}
public float marginSum() {
return marginSum;
}
}