如何为带有通用参数的数组列表创建分类方法



我正在尝试对带有通用参数的CD的数组列表进行分类。我有4个类:主,CD,搜索和分类。我有搜索方法可以使用,但我不知道如何修复分类方法。我正在尝试按序列号进行排序。

排序类

import java.util.ArrayList;
public class Sorting<T extends Comparable<T>> {
public int selectionSort(ArrayList<T> numbers, T key) {
      int i = 0;
      int j = 0;
      int indexSmallest = 0;
      int temp = 0;  // Temporary variable for swap
      for (i = 0; i < numbers.size(); ++i) {
         // Find index of smallest remaining element
         indexSmallest = i;
         for (j = i + 1; j < numbers.size(); ++j) {
            if (numbers.get(j) < numbers.get(indexSmallest)) {
               indexSmallest = j;
            }
         }
         // Swap numbers[i] and numbers[indexSmallest]
         temp = numbers.get(i);
         numbers[i]= numbers.get(indexSmallest);
         numindex= temp;
      }
   }
   public static void insertionSort(int[] numbers) {
      int i = 0;
      int j = 0;
      int temp = 0;  // Temporary variable for swap
      for (i = 1; i < numbers.length; ++i) {
         j = i;
         // Insert numbers[i] into sorted part 
         // stopping once numbers[i] in correct position
         while (j > 0 && numbers[j] < numbers[j - 1]) {
            // Swap numbers[j] and numbers[j - 1]
            temp = numbers[j];
            numbers[j] = numbers[j - 1];
            numbers[j - 1] = temp;
            --j;
         }
      }
   }

}

因为T extends Comparable<T>您应该使用Comparable接口的compareTo(T other)函数。我会这样做:

public class Sorting {
    public static <T extends Comparable<T>> void selectionSort(List<T> numbers) {
        int indexSmallest = 0;
        for (int i = 0; i < numbers.size(); i++) {
            // Find index of smallest remaining element
            indexSmallest = i;
            for (int j = i + 1; j < numbers.size(); j++) {
                // use compareTo
                if (numbers.get(j).compareTo(numbers.get(indexSmallest)) < 0) {
                    indexSmallest = j;
                }
            }
            // EDIT: your swapping code was wrong
            // Swap numbers[i] and numbers[indexSmallest]
            T temp = numbers.get(i);
            numbers.set(i, numbers.get(indexSmallest));
            numbers.set(indexSmallest, temp);
        }
    }
}

在选择排序的最后一行中,您有: numIndex= temp;我不相信numIndex存在...也许你是说 numbers.get(indexSmallest)= temp;

最新更新