ネストされたジェネリックにより、ジェネリック メソッド内で他のジェネリック型を使用できるようになり、再利用性の高いコードが作成されます。実際には、ネストされたジェネリックを使用して配列内の 2 つのピーク要素を見つけることができます。サンプル コードでは、ジェネリック ペアを使用して結果を保存し、要素を繰り返しチェックして隣接する要素と比較することでピーク値を見つけます。
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
クラスは、異なる型の 2 つの要素を格納するネストされたジェネリックです。
実際的なケース
2 つのピーク要素の配列 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
を使用して 2 つのピーク要素を格納します。配列を反復処理し、その要素が隣接する要素よりも大きいかどうかを確認することにより、ピーク要素を見つけます。
以上がJava 関数ジェネリックのネストされた使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。