Bubblesort allgemeiner schreiben

OJBestJ

Neues Mitglied
Hallo zusammen,
ich habe in Eclipse ein Soldatenarray erstellt und sie mit Bubblesort der Größe nach sortiert und ausgegeben. Meine Frage ist wie ich es allgemeiner schreiben könnte, sodass ich nicht mehr an Soldaten gebunden bin und z.B. noch ein Array an Flugzeugen erstellen und sortieren kann, ohne Bubblesort umschreiben zu müssen.
Und noch eine andere Frage nebenbei: wie kann ich mein Sortierbar Interface vom Bubblesort Package in der Soldat Klasse einbinden?
PS: Keine Ahnung wo die Zeile 66 herkommt, kann sie auch nicht löschen.
Java:
package Soldat;
import bubblesort.Bubblesort;

class Armee 
{
    private Soldat[]array;
    public Armee(Soldat[] array)
    {
        this.array=array;
    }
}

public class Soldat 
{
    private String name;
    private int größe;
    
    public Soldat(String name, int größe)
    {
        this.name=name;
        this.größe=größe;
    }

    public String toString()
    {
        return name + " " + größe;
    }
    
    public int getGroesse() 
     {
            return größe;
     }
    
    public int istGrößer(Soldat element)
    {
        Soldat einSoldat =  element;
        if (größe < einSoldat.getGroesse()) {
            return -1;
        } else {
            return größe - einSoldat.getGroesse();
        }
    }

public static void main(String[] args)
{
    Soldat[] Armee1=new Soldat[10];
    Armee Test=new Armee(Armee1);
    Armee1[0]= new Soldat("Heiner", 185);
    Armee1[1]= new Soldat("Klaus", 152);
    Armee1[2]= new Soldat("Jürgen", 176);
    Armee1[3]= new Soldat("Otto", 195);
    Armee1[4]= new Soldat("Hans", 167);
    Armee1[5]= new Soldat("Manfred", 144);
    Armee1[6]= new Soldat("Holger", 177);
    Armee1[7]= new Soldat("Kebab", 133);
    Armee1[8]= new Soldat("Günther", 199);
    Armee1[9]= new Soldat("Werner", 184);
    Bubblesort.sortiere(Armee1);
     <armee1.length;i++)
for(int i=0;i<armee1.length;i++)
{
        System.out.println(Armee1[i]);
    }
}
}
</armee1.length;i++)

Java:
package bubblesort;
import Soldat.Soldat;

interface Sortierbar
{
    public int istGrößer(Sortierbar element);
}

public class Bubblesort
{

    public static void sortiere (Soldat[] array)
    {
        boolean swap;   
        Soldat temp;     
      do {
          swap = false;
          for (int i = 0; i < array.length-1; ++i) {
              
              if ( array[i].istGrößer(array[i+1]) < 0) {
                  temp = array[i];
                  array[i] = array[i+1];
                  array[i+1] = temp;
                  swap = true;
              }
          }
      } while (swap);
    }
}
</armee1.length;i++)
 
Zuletzt bearbeitet:

Tarrew

Top Contributor
Nennt sich Java Generics.

Einzige Voraussetzung ist in deinem Fall, dass die Klassen dein Interface implementieren müssen. (Wobei es auch das Interface "Comparable" schon gibt, was du eventuell hättest nutzen können)

Java:
  public static <S extends Sortierbar> void bubbleSort(S[] unsorted) {
//implement me
}
 

Tobse

Top Contributor
Als ergänzung zu Tarrews Antwort:

In der Java-Bibliothek wird das "allgemeine" Sortieren mittels Comparator verwirklicht. Ein Comparator vergleicht zwei Objekte und gibt ein int < 0, 0 oder int > 1 zurück, respektiv ob das erste objekt "weniger", "gleich" oder "mehr" wie das Zweite ist. Bsp:

Java:
Flugzeug[] flugzeuge = ... ;
Soldat[] soldaten = ...;

// sortiert flugzeuge nach geschwindigkeit
Arrays.sort(flugzeuge, (a, b) -> a.getGeschwindigkeit() - b.getGeschwindigkeit());

// sortiert flugzeuge nach anzahl der Sitzplätze
Arrays.sort(flugzeuge, (a, b) -> a.getAnzahlSitzplaetze() - b.AnzahlSitzplaetze());

// sortiert soldaten nach größe
Arrays.sort(soldaten, (a, b) -> a.getGröße() - b.getGröße());

In deinem Sortieralgorithmus kannst du dann mittels comparator.compareTo(a, b) zwei Objekte vergleichen - völlig egal, welchen typ sie haben und nach welchen Kriterien du sortierst.
 
Zuletzt bearbeitet:

OJBestJ

Neues Mitglied
Nennt sich Java Generics.

Einzige Voraussetzung ist in deinem Fall, dass die Klassen dein Interface implementieren müssen. (Wobei es auch das Interface "Comparable" schon gibt, was du eventuell hättest nutzen können)

Java:
  public static <s extends="" sortierbar="" style="font-size: 14px;">void bubbleSort(S[] unsorted) {
//implement me
}
</s>
So funktioniert es danke.

Was ist die Bezeichnung für den Einschub mit den größer und kleiner Zeichen in deinem Code? Das habe ich noch nie gesehen und würde mir gerne durchlesen was das macht. Oder ist das einfach nur die Schreibweise um Interfaces in Methoden ein zu binden?
 
Zuletzt bearbeitet:

Tobse

Top Contributor
Diese Schreibweise heisst Lambda-Expression. Als beispiel: Alle Aufrufe an machWas bewirken exakt das selbe (und sind aus sicht der JVM auch genau das selbe, weil hier nur der Compiler eingreifft):

Java:
interface EinInterfaceMitNurEinerMethode {
    public int tuWas(int a, String b);
}
class EineKlasseDieEtwasTut {
    public static void machWasAnderes(EinInterfaceMitNurEinerMethode o) {
        // ruft in irgendeinem Kontext o.tuWas(int, String) auf.
    }
}

EineKlasseDieEtwasTut x = new EineKlasseDieEtwasTut();

// So ging es von Java 1.0 bis 1.4
class KonkreteKlasseMitEinerMethode implements InterfaceMitNurEinerMethode {
    public int tuWas(int a, String b) {
        return b.length() - a;
    }
}
x.machWas(new KonkreteKlasseMitEinerMethode());

// ab Java 5 gibt es dann Anonyme Klassen
x.machWas(new EinInterfaceMitNurEinerMethode() {
    pulic int tuWas(int a, String b) {
        return b.length() - a;
    }
});

// Ab Java 8 Gibt es jetzt Lambda-Expressions für diese Anwendungsfälle:
x.machWas((a, b) -> { return b.length() - a; });
// ODER
x.machWas((a, b) -> b.length() - a);
// ODER
class KonkreteKlasseMitMehrerenMethoden { // ACHTUNG!: implementiert nicht das Interface
    public static int trololoStatic(int a, String b) {
        return b.length() - a;
    }
    public int yeeehaw(int a, String b) {
        return b.length() - a;
    }
}
KonkreteKlasseMitMehrerenMethoden obj = new KonkreteKlasseMitMehrerenMethoden();

x.machWas(KonkreteKlasseMitMehrerenMethoden::trololoStatic);
x.machWas(obj::yeeehaw);

Mehr dazu
 
Zuletzt bearbeitet:

CSHW89

Bekanntes Mitglied
Meinte der TE nicht das hier?
Code:
< S extends Sortierbar >
Das nennt sich Generics. Siehe auch hier: Rheinwerk Computing :: Java ist auch eine Insel - 9 Generics<T>

Wobei das in diesem Fall nicht unbedingt notwendig ist, da Arrays in Java invariant sind. Das bedeutet, dass z.b. Number[] ein Obertyp von Integer[] ist, da Number ein Obertyp von Integer ist. Bei generischen Klassen gilt das nicht. ArrayList< Number > ist kein Obertyp von ArrayList< Integer >. So könnte die Methode auch einfacher wie folgt aussehen:
Java:
public static void bubbleSort(Sortierbar[] unsorted) {
  //implement me
}
lg Kevin
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Generischer Bubblesort Java Basics - Anfänger-Themen 19
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
H Bubblesort-Algorithms Java Basics - Anfänger-Themen 14
I Bubblesort Java Basics - Anfänger-Themen 1
L Bubblesort in Batch Script Java Basics - Anfänger-Themen 15
D Bubblesort Java Basics - Anfänger-Themen 2
G Bubblesort Array der Größe 10 Java Basics - Anfänger-Themen 1
M Bubblesort ohne Array Java Basics - Anfänger-Themen 30
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
R Erste Schritte Einsteiger-Video Bubblesort Bewertung Java Basics - Anfänger-Themen 11
D Array/Bubblesort Fehlermeldungen Java Basics - Anfänger-Themen 1
U BubbleSort Problem Java Basics - Anfänger-Themen 2
L Array und Bubblesort Java Basics - Anfänger-Themen 4
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
T BubbleSort Java Basics - Anfänger-Themen 9
J Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können. Java Basics - Anfänger-Themen 5
N Mein Bubblesort sortiert mein Array nicht Java Basics - Anfänger-Themen 2
E BubbleSort Java Basics - Anfänger-Themen 2
J Erste Schritte Bubblesort Java Basics - Anfänger-Themen 6
G Array mit BubbleSort sortieren Java Basics - Anfänger-Themen 2
N Bubblesort Programm funktioniert nicht Java Basics - Anfänger-Themen 19
R BubbleSort Java Basics - Anfänger-Themen 4
R BubbleSort Java Basics - Anfänger-Themen 15
A BubbleSort Java Basics - Anfänger-Themen 7
B BubbleSort Java Basics - Anfänger-Themen 10
R BubbleSort Java Basics - Anfänger-Themen 6
C Klassen BubbleSort was passiert mit dem Index ? Java Basics - Anfänger-Themen 2
B Sortiermethode bei Bubblesort Java Basics - Anfänger-Themen 15
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
M Laufzeitanalyse Bubblesort Java Basics - Anfänger-Themen 7
T BubbleSort Java Basics - Anfänger-Themen 2
P BubbleSort-Methode Java Basics - Anfänger-Themen 18
M BubbleSort (Sortieralgorithmus) Java Basics - Anfänger-Themen 28
B Bubblesort Java Basics - Anfänger-Themen 70
G Bubblesort ohne Schleifen Java Basics - Anfänger-Themen 10
F Bubblesort, Insertsort Java Basics - Anfänger-Themen 2
K BubbleSort Hausaufgabe Java Basics - Anfänger-Themen 20
B Bubblesort-Algorithmus und Testklasse Java Basics - Anfänger-Themen 5
c_sidi90 Array mit Bubblesort sortieren Java Basics - Anfänger-Themen 8
B Java Bubblesort Java Basics - Anfänger-Themen 5
F Bubblesort---Frage von Anfänger Java Basics - Anfänger-Themen 2
E BubbleSort kleiner Fehler? Java Basics - Anfänger-Themen 14
B BubbleSort Java Basics - Anfänger-Themen 5
L Bubblesort: Exception in Thread "main" Java Basics - Anfänger-Themen 5
K Einfaches Bubblesort Java Basics - Anfänger-Themen 11
W Problem mit BubbleSort und Array Java Basics - Anfänger-Themen 10
Spin taschenrechner incl bubblesort Java Basics - Anfänger-Themen 5
G Bubblesort Java Basics - Anfänger-Themen 2
Binary.Coder Bubblesort in einfachen unmissverständlichen Sätzen Java Basics - Anfänger-Themen 2
B Bubblesort Verfahren Java Basics - Anfänger-Themen 2
C Bubblesort Java Basics - Anfänger-Themen 5
I BubbleSort-Algorithmus Java Basics - Anfänger-Themen 8
G Bubblesort Java Basics - Anfänger-Themen 23
G Bubblesort Java Basics - Anfänger-Themen 15
kulturfenster BubbleSort Java Basics - Anfänger-Themen 7
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
T Zahlen mit Bubblesort sortieren Java Basics - Anfänger-Themen 2
D Bubblesort und Array Java Basics - Anfänger-Themen 6
T Bubblesort Java Basics - Anfänger-Themen 5
L Bubblesort funzt nicht Java Basics - Anfänger-Themen 3
N bubblesort Java Basics - Anfänger-Themen 4
T BubbleSort optimieren ??? Java Basics - Anfänger-Themen 26
T Ist das ein allgemeiner Konstruktor? Java Basics - Anfänger-Themen 5
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
S Bot schreiben Java Basics - Anfänger-Themen 1
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
L x und y Koordinaten in ein Array schreiben Java Basics - Anfänger-Themen 7
J Programm schreiben Java Basics - Anfänger-Themen 5
G In Datei schreiben Java Basics - Anfänger-Themen 1
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
J Methode selber schreiben Java Basics - Anfänger-Themen 5
M Plateau Prgramm schreiben Java Basics - Anfänger-Themen 2
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
J String in Datei schreiben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben