gpt4 book ai didi

java - java中如何调用使用泛型类型的类?

转载 作者:行者123 更新时间:2023-12-02 06:04:06 28 4
gpt4 key购买 nike

我在调用下面列出的 SelectionSort 类时遇到问题。我收到错误“无法访问 SelectionSort”。我想看看 SelectionSort 类对随机数组进行排序需要多长时间。这是 SelectionSort 类:

import java.lang.*;

public class SelectionSort {

public static <T extends Comparable<T>> void sort(T[] a) {
selectionSort(a, a.length-1);
}


private static <T extends Comparable<T>> void selectionSort(T[] a, int n) {
if (n < 0) return;
int indMax = findMaxIndex(a, n);
swap(a, n, indMax);
selectionSort(a, n-1);
}

private static <T extends Comparable<T>> int findMaxIndex(T[] a, int n) {
int indMax = 0;
for (int i = 1; i <= n; i++) {
if (a[indMax].compareTo(a[i]) < 0) {
indMax = i;
}
}
return indMax;
}

private static <T extends Comparable<T>> void swap(T[] a, int i, int j) {
T tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}

// Main function to test the code
public static void main(String[] args) {

// Make an array of Integer objects
Integer[] a = new Integer[4];
a[0] = new Integer(2);
a[1] = new Integer(1);
a[2] = new Integer(4);
a[3] = new Integer(3);

// Call the sorting method (type T will be instantiated to Integer)
SelectionSort.sort(a);

// Print the result
for (int i = 0; i < a.length; i++)
System.out.println(a[i].toString());
}
}

这是我尝试调用该类的代码部分,我在第二行中收到错误

      long result;

long startTime = System.currentTimeMillis();
SelectionSort.sort(array, 100, array.length-1);
long endTime = System.currentTimeMillis();
result = endTime-startTime;

System.out.println("The quick sort runtime is " + result + " miliseconds");
}
}

最佳答案

SelectionSort.sort(array, 100, array.length-1);

您向我们展示的代码中不存在此 3 参数方法,因此您可能无法调用它。

int[] array = new int[size];

int不是对象,因此无法扩展 Comparable 。数组不会自动装箱,因此您必须将其声明为 Integer[]将其传递给接受 T[] 的方法哪里T extends Comparable<T> .

Integer[] a = new Integer[4];
SelectionSort.sort(a);

这部分没问题,这就是你可以调用 sort 的方式.

关于java - java中如何调用使用泛型类型的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430965/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com