巢狀泛型允許在泛型方法中使用其他泛型類型,建立高度可重複使用的程式碼。實戰中,嵌套泛型可用於尋找數組中兩個峰值元素,範例程式碼使用泛型 Pair 儲存結果,透過迭代檢查元素與相鄰元素比較找到峰值。
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
類別是一個巢狀泛型,它儲存兩個類型不同的元素。
實戰案例
讓我們考慮一個需要傳回兩個峰值元素的陣列 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
來儲存兩個峰值元素。它透過迭代數組並檢查元素是否大於其相鄰元素來找到峰值元素。
以上是Java 函數泛型的巢狀使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!