중첩된 제네릭을 사용하면 제네릭 메서드 내에서 다른 제네릭 유형을 사용할 수 있어 재사용성이 높은 코드를 만들 수 있습니다. 실제로 중첩된 제네릭을 사용하여 배열에서 두 개의 피크 요소를 찾을 수 있습니다. 샘플 코드는 일반 쌍을 사용하여 결과를 저장하고 요소를 반복적으로 확인하고 인접한 요소와 비교하여 피크 값을 찾습니다.
Java 함수 제네릭의 중첩 사용
제네릭은 다양한 데이터 유형에서 작동할 수 있는 재사용 가능한 코드를 생성할 수 있는 강력한 Java 언어 기능입니다. 함수 제네릭을 사용하면 함수 내에서 제네릭을 사용할 수 있으므로 유연성이 향상됩니다.
중첩 제네릭
중첩 제네릭은 제네릭 메서드 내에서 다른 제네릭 유형을 사용하는 것을 의미합니다. 이를 통해 특히 복잡한 데이터 구조를 다룰 때 재사용 가능성이 높은 코드를 만들 수 있습니다.
다음은 중첩된 제네릭의 예입니다.
public class Pair<T, U> { private T first; private U second; public Pair(T first, U second) { this.first = first; this.second = second; } public T getFirst() { return first; } public U getSecond() { return second; } }
Pair
클래스는 서로 다른 유형의 두 요소를 저장하는 중첩된 제네릭입니다. Pair
类是一个嵌套泛型,它存储两个类型不同的元素。
实战案例
让我们考虑一个需要返回两个峰值元素的数组 nums
的场景。峰值元素是指比其相邻元素都大的元素。
以下是一个使用嵌套泛型的 Java 代码:
public class FindPeakElements { public static <T extends Comparable<T>> Pair<T, T> findPeakElements(T[] nums) { if (nums == null || nums.length < 3) { throw new IllegalArgumentException("Invalid array size"); } T firstPeak = nums[0]; T secondPeak = nums[nums.length - 1]; for (int i = 1; i < nums.length - 1; i++) { T current = nums[i]; T prev = nums[i - 1]; T next = nums[i + 1]; if (current > prev && current > next) { if (current > firstPeak) { secondPeak = firstPeak; firstPeak = current; } else if (current > secondPeak) { secondPeak = current; } } } return new Pair<>(firstPeak, secondPeak); } public static void main(String[] args) { Integer[] nums = {1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1}; Pair<Integer, Integer> peaks = findPeakElements(nums); System.out.println("First peak: " + peaks.getFirst()); System.out.println("Second peak: " + peaks.getSecond()); } }
这个代码使用嵌套泛型 Pair
nums
배열을 반환해야 하는 시나리오를 고려해 보겠습니다. 피크 요소는 인접한 요소보다 큰 요소입니다. 🎜🎜다음은 중첩된 제네릭을 사용하는 Java 코드입니다. 🎜rrreee🎜이 코드는 중첩된 제네릭 Pair
를 사용하여 두 개의 피크 요소를 저장합니다. 배열을 반복하고 요소가 이웃 요소보다 큰지 확인하여 피크 요소를 찾습니다. 🎜위 내용은 Java 함수 제네릭의 중첩된 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!