Heim > Java > javaLernprogramm > Hauptteil

Verwendung von Generika zur Implementierung der Array-Sortierung in Java

WBOY
Freigeben: 2023-05-16 16:22:06
nach vorne
1035 Leute haben es durchsucht

1. Sequentielle Verkleinerung von Ganzzahl-Arrays

public static int seqSearch(int[] arr, int first, int last, int target) {        for (int i = first; i < last; i++)            if (arr[i] == target)                return i;            return -1;    }
Nach dem Login kopieren

1.1 Die obige Methode abstrahieren, ***wir denken daran, die Referenz von Javas Objekt zu verwenden, um die universelle Methode zu implementieren#🎜🎜 #

public static int seqSearch(Object[] arr, int first, int last, Object target) {        for (int i = first; i < last; i++)            if (arr[i].equals(target))                return i;            return -1;    }
Nach dem Login kopieren

2.1 Es scheint, dass die Objektreferenz sehr praktisch ist und die zweite sequentielle Suche Float, Double, String usw. verwenden kann. Wenn wir weiter studieren möchten, werden Probleme auftreten Vergleichbare Schnittstellenmethoden.

JVM gibt eine Warnung aus, wenn die Art der erzwungenen Umwandlung verarbeitet wird: Umwandlung deaktivieren

public static void selectionSort(int[] arr) {        int n = arr.length, smallIndex = 0;        for (int i = 0; i < n; i++) { // 遍历array数组            smallIndex = i;            for (int j = i + 1; j < n; j++)                if (arr[smallIndex] > arr[j]) // 选择最小的索引j                    smallIndex = j;            // if (smallIndex != i) {            exchange(arr, i, smallIndex);// 交换array[i]与 min(array[i+1,..,n])            // }        }    }
Nach dem Login kopieren
Daran können wir erkennen, dass die Objektreferenz verwendet wird, um häufige Probleme zu lösen, wenn die vergleichbare Schnittstelle verwendet wird nicht implementiert ist, wenn tatsächliche Parameter verwendet werden, löst der Compiler eine castClassException-Laufzeitausnahme aus. Ein solches Programm ist unsicher.

3.1 Verwenden Sie die Objektreferenz, um einen Algorithmus zu verallgemeinern (z. B. sequentielle Suche). Unter Verwendung der Objektreferenz und des Zielwerts des Arrays muss die zu vergleichende Datenklasse im Algorithmus die Comparable-Schnittstelle implementieren, solange der Datentyp die Methode „equals“ implementiert.

Jetzt verwenden wir Java-Generika, um dieses Problem zu lösen problem

@SuppressWarnings("unchecked")    public static void selectionSort(Object[] arr) {            int n = arr.length, smallIndex = 0;        for (int i = 0; i < n; i++) { // 遍历array数组            smallIndex = i;            for (int j = i + 1; j < n; j++)                if (((Comparable<Object>)arr[smallIndex]).compareTo(((Comparable<Object>)arr[j])) > 0) // 选择最小的索引j                    smallIndex = j;            // if (smallIndex != i) {            exchange(arr, i, smallIndex);// 交换array[i]与 min(array[i+1,..,n])            // }        }    }
Nach dem Login kopieren
Die statische Methode SelectionSort() in der Arrays-Klasse, diese Methode befasst sich mit Ganzzahltypen. Um die generische Version zur Implementierung dieses Algorithmus zu verwenden, muss der Objekttyp oder seine Oberklasse, die den tatsächlichen Parameter übergibt, die Comparable-Schnittstelle implementieren, da die beiden Elemente im generischen Typarray T[] verglichen werden müssen.

Das obige ist der detaillierte Inhalt vonVerwendung von Generika zur Implementierung der Array-Sortierung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage