Sortieren und Filtern von Funktionen/Methoden

Status
Nicht offen für weitere Antworten.

märliprinz

Mitglied
Hallo Zusammen!

Im Code seht ihr verschiedene Funtkionen (updateToVersion_01_01, updateToVersion_01_02, ..., doNotCall). Wenn ich dieses Programm so ausführe wie es da steht, bekomme ich diesen Output:

main
initialSetup
updateToVersion_01_01
updateToVersion_01_02
updateToVersion_02_01
updateToVersion_02_02
updateToVersion_02_03
doNotCall
upgrade

Ich möchte einen Filter setzen der mir:
  • 1. nur die Funktionen die mit updateToVersion beginnen ausgibt
    2. nach Version sortiert
Erwarteter Output:

updateToVersion_01_01
updateToVersion_01_02
updateToVersion_02_01
updateToVersion_02_02
updateToVersion_02_03

Nun, ich bin noch ziemlich unerfahren was programmieren anbelangt, wäre deshalb froh wenn mir jemand ein Tip geben kann.
Code:
package reflection;

import java.lang.reflect.Method;
import java.util.Vector;

public class Test {

	public Test(){
		
	}
	private void initialSetup (String a, int b) throws Exception {
		System.out.println("in initialSetup");
	}
	
	private void updateToVersion_01_01 (String a, int b) throws Exception {
		System.out.println("in 01_01");
	}
	
	private void updateToVersion_01_02 (String a, int b) throws Exception {
		System.out.println("in 01_02");
	}

	private void updateToVersion_02_01 (String a, int b) throws Exception {
		System.out.println("in 02_01");
	}
	
	private void updateToVersion_02_02 (String a, int b) throws Exception {
		System.out.println("in 02_02");
	}
	
	private void updateToVersion_02_03 (String a, int b) throws Exception {
		System.out.println("in 02_03");
	}
	
	private void doNotCall(String a, int b) {
		System.out.println("format C:");
	}
	
	public void upgrade(String a, int b) {
		/* new */
		Method[] methods = Test.class.getDeclaredMethods();
		
		//Vector vector = new Vector();
		
		for (int i = 0; i < methods.length; i++)
        {
            System.out.println(methods[i].getName());
            //vector.add(methods[i]);
        }	
	}
	
	public static void main(String[] args) {	
		Test test = new Test();
		test.upgrade("Test", 1);
	}
}

Danke :###
 

Mag1c

Top Contributor
Hi,

märliprinz hat gesagt.:
Nun, ich bin noch ziemlich unerfahren was programmieren anbelangt, wäre deshalb froh wenn mir jemand ein Tip geben kann.

und dann gleich mit Reflection rumspielen :roll: mutig mutig

Comparator
Arrays#sort
Collections#sort
String#startsWith

Wenn die update-Methoden und Versionen immer nach dem Muster aus deinem Beispiel
aufgebaut sind, dann reicht dir ein einfacher String-Vergleich. Falls du auf echte Version
prüfen mußt/willst, mußt du mit ein paar String-Spielereien die Versionsnummern aus
dem Methodennamen ausschneiden.

Gruß
Mag1c
 

märliprinz

Mitglied
Mag1c hat gesagt.:
Wenn die update-Methoden und Versionen immer nach dem Muster aus deinem Beispiel
aufgebaut sind, dann reicht dir ein einfacher String-Vergleich.
MethodComparator.java
Code:
package reflection;

import java.lang.reflect.Method;
import java.util.Comparator;

public class MethodComparator implements Comparator {

	public int compare(Object arg0, Object arg1) {
		Method method1 = (Method)arg0;
		Method method2 = (Method)arg1;
		
		return 0;
	}

}
test.java
Code:
package reflection;

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;

public class Test {

	public Test(){
		
	}
	private void initialSetup (String a, int b) throws Exception {
		System.out.println("in initialSetup");
	}
	
	private void updateToVersion_01_02 (String a, int b) throws Exception {
		System.out.println("in 01_02");
	}

	private void updateToVersion_01_01 (String a, int b) throws Exception {
		System.out.println("in 01_01");
	}
	
	private void updateToVersion_02_01 (String a, int b) throws Exception {
		System.out.println("in 02_01");
	}
	
	private void updateToVersion_02_03 (String a, int b) throws Exception {
		System.out.println("in 02_03");
	}
	
	private void updateToVersion_02_02 (String a, int b) throws Exception {
		System.out.println("in 02_02");
	}
	
	private void doNotCall(String a, int b) {
		System.out.println("format C:");
	}
	
	public void upgrade(String a, int b) {
		Method[] methods = Test.class.getDeclaredMethods();
		
		Vector vector = new Vector();
		
		for (int i = 0; i < methods.length; i++)
        {
            String methodname = methods[i].getName();
            if(methodname.startsWith("updateToVersion_")){
            	vector.add(methods[i]);
            	System.out.println(methodname);
            }
            
        }
		
		Comparator comparator = new MethodComparator();
		
		Collections.sort(vector, comparator);
	}
	
	public static void main(String[] args) {	
		Test test = new Test();
		test.upgrade("Test", 1);
	}
}

So das sind meine zwei java files... bin nun am MethodComparator.java... komme momentan aber nicht weiter :cry:
 

Mag1c

Top Contributor
Hi,

Code:
method1.getName().compareTo(method2.getName())

Gruß
Mag1c
 

märliprinz

Mitglied
test.java:
Code:
package reflection;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;

public class Test {

	public Test(){
		
	}
	private void initialSetup (String a, int b) throws Exception {
		System.out.println("in initialSetup");
	}
	
	private void updateToVersion_01_02 (String a, int b) throws Exception {
		System.out.println("in 01_02");
	}

	private void updateToVersion_02_01 (String a, int b) throws Exception {
		System.out.println("in 02_01");
	}
	
	private void updateToVersion_02_03 (String a, int b) throws Exception {
		System.out.println("in 02_03");
	}
	
	private void updateToVersion_02_02 (String a, int b) throws Exception {
		System.out.println("in 02_02");
	}
	
	private void doNotCall(String a, int b) {
		System.out.println("format C:");
	}
	
	private void updateToVersion_01_01 (String a, int b) throws Exception {
		System.out.println("in 01_01");
	}
	
	public void upgrade(String a, int b) {
		/* new */
		Method[] methods = Test.class.getDeclaredMethods();
		
		Vector vector = new Vector();
		
		for (int i = 0; i < methods.length; i++)
        {
            String methodname = methods[i].getName();
            if(methodname.startsWith("updateToVersion_")){
            	vector.add(methods[i]);
            }
            
        }
		
		Comparator comparator = new MethodComparator();
		
		Collections.sort(vector, comparator);
		for(int i = 0; i < vector.size();i++){
			Method m = (Method) vector.elementAt(i);
			System.out.println(m.getName());
			
			m.invoke(null, new Object[]{});
		}
	}
	
	public static void main(String[] args) {	
		Test test = new Test();
		test.upgrade("Test", 1);
	}
}

So das ist mein Code bis jetzt... aber ich verstehe nicht wie das mit dem invoke funktionieren soll... hmm hat das jemand schonmal angewendet?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
L allgemein Strings händisch in Liste sortieren Allgemeine Java-Themen 47
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
Willi.We Array sortieren Allgemeine Java-Themen 5
L ArrayList sortieren Allgemeine Java-Themen 2
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
C MySQL Tabellen sortieren. Allgemeine Java-Themen 33
Curtis_MC Collections Liste anhand mehrere Kriterien sortieren Allgemeine Java-Themen 6
B Java Mail: Emails sortieren? Allgemeine Java-Themen 5
G Liste (UsageStats) sortieren (Android) Allgemeine Java-Themen 5
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
P Wertepaare sortieren Allgemeine Java-Themen 3
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
T Collections ArrayList Sortieren Allgemeine Java-Themen 4
P Listen sortieren Allgemeine Java-Themen 1
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
S Verkettete (Teil)Liste sortieren ( rekursiv bis n) Allgemeine Java-Themen 2
K Strings sortieren: 2 Kritieren Allgemeine Java-Themen 5
B Algortihmus zum linearen Sortieren Allgemeine Java-Themen 1
K ArrayList sortieren Allgemeine Java-Themen 16
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
H Liste sortieren anhand optionalem Property Allgemeine Java-Themen 3
2 Mehrere Uhrzeiten Sortieren Allgemeine Java-Themen 2
B Counting Sort (Sortieren durch Zählen) Allgemeine Java-Themen 13
H Liste von Objekten generisch sortieren Allgemeine Java-Themen 0
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
K Sortieren nach Vorgabe Allgemeine Java-Themen 6
S Erste Schritte Arrayliste alphabetisch sortieren mit Eingabe Allgemeine Java-Themen 9
L Sortieren von "Map<String, Object>" Allgemeine Java-Themen 2
M Sortieren und Leerzeichen Allgemeine Java-Themen 11
W Array Indizes sortieren Allgemeine Java-Themen 16
D Sortieren von Liste zu unperformant Allgemeine Java-Themen 6
E Array alphabetisch sortieren Allgemeine Java-Themen 1
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
G Map nach key sortieren Allgemeine Java-Themen 14
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
Gossi Collections (Unbekannte) Liste Sortieren Allgemeine Java-Themen 10
S Int Values sortieren Allgemeine Java-Themen 7
S Sortieren nach Objekten Allgemeine Java-Themen 13
A 2D-array problem (sortieren) Allgemeine Java-Themen 6
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
D priority queue sortieren Allgemeine Java-Themen 10
G List<Person> sortieren Allgemeine Java-Themen 6
K Hashmap sortieren Allgemeine Java-Themen 6
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
M ArrayList<String>, String häufigkeit sortieren Allgemeine Java-Themen 4
J Wie sortieren? Allgemeine Java-Themen 11
T Liste sortieren Allgemeine Java-Themen 6
K Strings sortieren (knifflig) Allgemeine Java-Themen 7
B JTable nach Icon sortieren Allgemeine Java-Themen 6
C ArrayList (mit Objekten) sortieren Allgemeine Java-Themen 12
J Map nach value sortieren Allgemeine Java-Themen 14
N Zahlen in Strings einer ArrayList sortieren Allgemeine Java-Themen 14
V ArrayList sortieren Allgemeine Java-Themen 7
S String-Array nach Datum sortieren Allgemeine Java-Themen 10
Developer_X Ein Array nach einem bestimmten Attribut sortieren Allgemeine Java-Themen 3
B Sortieren mit generischen Datentypen Allgemeine Java-Themen 3
C ArrayList anhand von zwei Attributen sortieren Allgemeine Java-Themen 4
O Sortieren von Telefonnummern Allgemeine Java-Themen 8
D JTabel sortieren nach mehreren kriterien Allgemeine Java-Themen 3
G Verschachtelte Treemaps, nach Value sortieren Allgemeine Java-Themen 11
K ArrayList nach bestimmtem Muster sortieren Allgemeine Java-Themen 3
I Vector mit Objekten sortieren,Videos mit JMF wiedergeben Allgemeine Java-Themen 6
S Koordinatentupel-Map sortieren?? Allgemeine Java-Themen 16
C ArrayList sortieren (mehrere Kriterien) Allgemeine Java-Themen 6
G ArrayList mit quicksort sortieren Allgemeine Java-Themen 9
Spot84 Vector nach Ressourcetyp sortieren Allgemeine Java-Themen 4
G sortieren von generics Allgemeine Java-Themen 10
Z Als Final deklarierte Klasse im Array sortieren Allgemeine Java-Themen 2
C ArrayList nach Datum sortieren Allgemeine Java-Themen 7
O ArrayList sortieren Allgemeine Java-Themen 8
G ArrayList mit Indices parallel sortieren Allgemeine Java-Themen 8
D HashMap sortieren Allgemeine Java-Themen 2
C Sortieren File[] Allgemeine Java-Themen 5
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
D LinkedList anhand einer long-Variable der Objekte sortieren Allgemeine Java-Themen 5
O Vektoren in Vektor sortieren aber mit Java 1.4 (!) Allgemeine Java-Themen 4
T TreeMap durch Comparator mit Generics sortieren Allgemeine Java-Themen 9
M ArrayList sortieren - HashMap mit sort_id vorhanden Allgemeine Java-Themen 2
A Sortieren mit Java Allgemeine Java-Themen 3
J Properties sortieren Allgemeine Java-Themen 6
T HashMap (String, Object(String , int)) nach int sortieren Allgemeine Java-Themen 7
E Bitte um Rat: Sortieren mit ArrayList Allgemeine Java-Themen 2
G Strings die Zahlen enthalten sinnvoll sortieren (A2 < A10 Allgemeine Java-Themen 4
G List mit selbstdefinierten Objekten sortieren Allgemeine Java-Themen 2
F Doppelt verkettete Liste sortieren? Allgemeine Java-Themen 8
S ArrayList nach mehreren Spalten sortieren? Allgemeine Java-Themen 13
G Set absteigend Sortieren Allgemeine Java-Themen 6
B ein spezielles Byte-Array sortieren Allgemeine Java-Themen 11
D Sortieren? Allgemeine Java-Themen 13
N ArrayList sortieren Allgemeine Java-Themen 10
L Nach Häufigkeit sortieren Allgemeine Java-Themen 6
S Dten im Excel sortieren Allgemeine Java-Themen 5
Z Elemente in Vector nach Häufigkeit sortieren. Allgemeine Java-Themen 13
H Objekte Sortieren Allgemeine Java-Themen 4
F Kann man String[] sortieren? Allgemeine Java-Themen 2
H will einfach nicht sortieren! Allgemeine Java-Themen 23
T Collections/Arrays sortieren => ä, ö, ü, ß Groß/klein Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben