接上篇:https://developer.aliyun.com/article/1228184?spm=a2c6h.13148508.setting.18.358c4f0eIHLsiZ
3. 利用元组类实现
理论依据:
元组(Tuple):Java中的元组(Tuple)是一种数据结构,可以存放多个元素,并且每个元素的数据类型可以不同。Tuple与List类似,但是不同的是,List只能存储一种数据类型,而Tuple可存储多种数据类型。
可能你会质疑,Object类型的List实际也是可以存储多种类型的啊?但是,在创建List时,需要指定元素数据类型,只能指定为Object类型;在获取的元素时,只能获取到Object类型的值,需要强制转化为对应的数据类型。而Tuple在创建时,可以直接指定多个元素数据类型;在获取元素时,无需进行数据类型的强制转化。
常用的元组工具包有:
a) Apache的commons-lang3提供的元组类
• Pair:MutablePair,ImmutablePair
• Triple:MutableTriple、ImmutableTriple
b) JavaTuples提供的元组类
public final class GeometryHelper {
* @param segmentLengthes 分段长度数组
public static LineString[] splitLineString(LineString lineString, double[] segmentLengthes) {
Coordinate[] coordinates = lineString.getCoordinates();
MutablePair mutablePair = MutablePair.of(1, coordinates[0]);
int length = targetLengthes.length;
LineString[] lineStrings = new LineString[length];
for (int i = 0; i < length - 1; i++) {
lineStrings[i] = combineLineString(coordinates, mutablePair, targetLengthes[i]);
private static LineString combineLineString(Coordinate[] coordinates, MutablePair mutablePair,
int index = mutablePair.getLeft();
Coordinate coordinate = mutablePair.getRight();
mutablePair.setRight(coordinate);
return buildLineString(coordinateList);