>Java >java지도 시간 >Java에서 쌍을 사용하여 쌍 결과를 반환하는 방법

Java에서 쌍을 사용하여 쌍 결과를 반환하는 방법

王林
王林앞으로
2023-05-18 19:58:041458검색

Pair를 사용하여 쌍으로 된 결과 반환

C/C++ 언어에서 쌍(쌍)은 std::pair와 같이 두 개의 데이터 유형을 하나의 데이터 유형으로 결합하는 컨테이너입니다.

Pair에는 두 가지 주요 용도가 있습니다.

  1. 쌍 처리를 위해 키와 값을 함께 넣습니다. 주로 Map의 Entry 클래스와 같이 Map에서 이름-값 쌍을 반환하는 데 사용됩니다.

  2. 함수가 반환해야 하는 경우; 두 개의 결과가 있는 경우 쌍을 사용하여 너무 많은 데이터 모델 클래스를 정의하는 것을 방지할 수 있습니다.

첫 번째 용도가 더 일반적이지만 여기서는 주로 두 번째 용도를 설명합니다.

1. 쌍 결과 반환을 구현하는 모델 클래스 정의

함수 구현 코드:

/** 点和距离类 */@Setter@Getter@ToString@AllArgsConstructorpublic static class PointAndDistance {    /** 点 */
    private Point point;    /** 距离 */
    private Double distance;
}/** 获取最近点和距离 */public static PointAndDistance getNearestPointAndDistance(Point point, Point[] points) {    // 检查点数组为空
    if (ArrayUtils.isEmpty(points)) {        return null;
    }    // 获取最近点和距离
    Point nearestPoint = points[0];    double nearestDistance = getDistance(point, points[0]);    for (int i = 1; i < points.length; i++) {        double distance = getDistance(point, point[i]);        if (distance < nearestDistance) {
            nearestDistance = distance;
            nearestPoint = point[i];
        }
    }    // 返回最近点和距离
    return new PointAndDistance(nearestPoint, nearestDistance);
}

함수 사용 사례:

Point point = ...;
Point[] points = ...;
PointAndDistance pointAndDistance = getNearestPointAndDistance(point, points);if (Objects.nonNull(pointAndDistance)) {
    Point point = pointAndDistance.getPoint();
    Double distance = pointAndDistance.getDistance();
    ...
}

2 쌍 클래스를 사용하여 쌍 결과 반환

JDK에서 기본 쌍 데이터 구조가 없으므로 대신 Map::Entry를 사용할 수도 있습니다. 그러나 Apache commons-lang3 패키지의 쌍 클래스는 사용하기가 더 쉽습니다. 다음은 쌍 클래스를 예로 사용합니다.

함수 구현 코드:

/** 获取最近点和距离 */public static Pair<Point, Double> getNearestPointAndDistance(Point point, Point[] points) {    // 检查点数组为空
    if (ArrayUtils.isEmpty(points)) {        return null;
    }    // 获取最近点和距离
    Point nearestPoint = points[0];    double nearestDistance = getDistance(point, points[0]);    for (int i = 1; i < points.length; i++) {        double distance = getDistance(point, point[i]);        if (distance < nearestDistance) {
            nearestDistance = distance;
            nearestPoint = point[i];
        }
    }    // 返回最近点和距离
    return Pair.of(nearestPoint, nearestDistance);
}

함수 사용 사례:

Point point = ...;
Point[] points = ...;
Pair<Point, Double> pair = getNearestPointAndDistance(point, points);if (Objects.nonNull(pair)) {
    Point point = pair.getLeft();
    Double distance = pair.getRight();
    ...
}

위 내용은 Java에서 쌍을 사용하여 쌍 결과를 반환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제