Felder mit unterschiedl. Typen sortieren

Holger_83

Mitglied
Hallo zusammen,

ich bin neu im Forum und wollte das auch gleich mal mit einer Frage feiern :)

Erläuterung:
Meine Aufgabe ist es einen kryptografisch verschlüsselten Text zu entschlüsseln.

Der Text sieht ungefähr so aus:
CHF CHDSDS RTHS .... usw (nicht genau so aber so ähnlich, soll nur erklären wie es ausschaut)

Der Text wird aus einer .txt gelesen und von mir als string umgewandelt .
Im nächsten Schritt mache ich aus dem String ein Char Array.

Jeder Buchstabe im Chriffre hat eine eindeutige zuordnung.
Um herraus zu bekommen um welchen Schlüssel es sich handelt muss man die Häufigkeit betrachten, wie oft ein Buchstabe vorkommt.
zBsp kommt das E im deutschen recht häufig vor.

Ein bisschen Quellcode zur Erläuterung
Entschuldigt bitte wenn dieser unsauber ist


Hier speichere ich das vorkommen der Buchstaben im Quelltext in ein int array
Java:
for (int i=0; i<alpha.length;i++){    //char alpha []={'A','B',....}
	    	  temp=counter;  //kann ignoriert werden
	    	  counter=0;
		    	for(int d=0; d<datei.length();d++){
		    		if(alpha[i]==beta[d]){ // char beta[] { chars aus der Quelldatei.....}
	     			  counter++;  //zählt die Häufigkeit in der Quelldatei
			    	  vorkommen[i]=counter; //speichert die aktuelle Häufigkeit in Vorkommen
			    		}
			    	}

Nun habe ich 2 Arrays, ein char und ein int, die beide abhängig von einander sind.
Ich habe das Problem zwar gelöst, diese beiden zu sortieren aber recht unschön mMn.

Meine Variante (nicht lachen bitte)

Java:
for(int x=0;x<vorkommen.length;x++) //Sortieren nach Häufigkeit
			      {
			    	häufig[x]=vorkommen[x];   //neues Array als hilft Array
			    	  
			      }
			      
			      java.util.Arrays.sort(häufig);
			      
for (int x=0;x<häufig.length;x++)
			      {
			    	  for (int i=0;i<vorkommen.length;i++){
			    		  if(häufig[x]==vorkommen[i]){
			    			  ahäufig[x]=alpha[i];   //neues char Array für finale Ausgabe
			    			  System.out.print(ahäufig[x]+" = " +häufig[x]+" ");
			    		  }
			    	  }
			      }

Ziel ist es später, die Buchstaben im Text zu ersetzten und eine Annäherung an das Original zu bekommen.

Wie Ihr seht habe ich ziemlich viele Felder.
Meine Frage ist nun:
Kann ich ein Feld erzeugen bei dem ich die Werte in alpha[] und die Werte in vorkommen[]
in Abhängigkeit sortiere ?

Beispiel
Buchstabe Häufigkeit
A 60
B 20
C 30
usw...
in :
Buchstabe Häufigkeit
E 300
N 208
usw...


Ich hatte an sowas ähnliches gedacht:
Array[char][int] und nach int sortieren.

Vielen Dank für Tips und Anregungen
Gruß
Holger
 
Zuletzt bearbeitet:

Antoras

Top Contributor
Dafür bietet sich eine eigene Klasse und ein Comparator an:
Java:
public class ComparatorTest {

	public static void main(final String... args) {
		final List<Letter> l = Arrays.asList(new Letter('A', 37), new Letter('B', 24), new Letter('D', 134), new Letter('E', 62));
		Collections.sort(l);
		System.out.println(l);
	}
}

class Letter implements Comparable<Letter> {
	
	private final char letter;
	private final int occurence;

	public Letter(final char letter, final int occurence) {
		this.letter = letter;
		this.occurence = occurence;
	}

	@Override
	public int compareTo(final Letter o) {
		return o.occurence - occurence;
	}
	
	@Override
	public String toString() {
		return "Letter(" + letter + "," + occurence + ")";
	}
}
Anstatt das Comparable direkt in der Klasse zu implementieren bietet sich auch direkt ein Comparator an, den du der sort-Methode übergeben kannst. Mehr dazu hier.
 

Holger_83

Mitglied
Hallo

diese methode verstehe ich nicht ganz...

Java:
public int compareTo(final Letter o) {
		return o.occurence - occurence;
	}

Ist es richtig das hier gerechnet (-) wird oder sehe ich das falsch?
 

Eldorado

Bekanntes Mitglied
Diese Methode ist zum sortieren gedacht. Sind zwei Werte genau gleich, wird 0 zurück gegeben. Ist der übergebene Wert größer als der Wert in der Klasse wird eine positive Zahl zurück gegeben, ist der übergebene Wert kleiner, wird eine negative Zahl zurück gegeben.
 

Holger_83

Mitglied
vielen Dank :)

Das kann ich auch nachvollziehen was du gesagt hast.
Eine abschließende Frage nochmal zu dem Ausdruck
Code:
 return o.occurence - occurence;

Wird hier ein Object verschoben ?
Danke für die Hilfe zum Verständnis!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
B clone(), Clonable und Felder von Interfacetypen Java Basics - Anfänger-Themen 3
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Enum Typen, was passiert intern mit ihnen? Java Basics - Anfänger-Themen 2
O Generische Typen Java Basics - Anfänger-Themen 9
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
BadBat Variablen Eine Variable mit 2 Typen Java Basics - Anfänger-Themen 38
D Generische Typen Java Basics - Anfänger-Themen 20
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
K Datentypen Kurzform Addition geht, Langform scheitert am Typen Java Basics - Anfänger-Themen 6
K Frage zu Referenzvariablen und deren Typen Java Basics - Anfänger-Themen 6
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
D Klassen Feste und veränderbare Typen in Hierarchien Java Basics - Anfänger-Themen 5
B Elementare Typen und Referenztypen Java Basics - Anfänger-Themen 6
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
T genericsdeklaration - Typen einschränken Java Basics - Anfänger-Themen 17
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
alderwaran überladene methoden mit allen möglichen typen aufrufen Java Basics - Anfänger-Themen 3
F Datentypen Zuweisungsproblem bei parametrisierten Typen mit/ohne Wildcards Java Basics - Anfänger-Themen 3
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
D Datentypen mehrdimensionales Array meherer Typen möglich ? Java Basics - Anfänger-Themen 6
R Array eines neuen Typen erstellen und befüllen Java Basics - Anfänger-Themen 2
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
T mit Typen Date rechnen Java Basics - Anfänger-Themen 6
G Mehrere Typen in einer Datei Java Basics - Anfänger-Themen 5
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
M List mit typen füllen Java Basics - Anfänger-Themen 5
J Datei aus unterschiedlichen Typen auslesen Java Basics - Anfänger-Themen 6
G Problem mit Variablen-Typen Java Basics - Anfänger-Themen 3
L 2 verschiedene Typen in einer Tabelle ablegen Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben