wie kann man den Inhalt eines Object[] umordnen?
Ich habe in einem Array Namen von DB Tabellen gespeichert und möchte die Namen umordnen, anhand des Felds Priorität, dass jede Tabelle hat und durchgängig gleich ist(pro Tabelle).
Ich habe eine DB Anfrage gemacht, die mir die Pioritäten anzeigt:
Object[][] list = null;
try {
int listSize = 0;
Object[] choices = managerAlg.getChoosedMod();
Class.forName(driver);
con = (Connection) DriverManager.getConnection(url + "modules" , user, pass);
stmt = (Statement) con.createStatement();
res = (ResultSet) stmt.executeQuery( "SELECT " + this.createSelectString() + " " +
"FROM " + this.createFromString() + " " +
this.createWhereString() + " " );
while (res.next()) {
listSize++;
}
res.first();
int listWidth = choices.length +1;
if (listSize > 0) {
list = new Object[listSize][listWidth];
for (int j = 0; j < listSize; j++) {
list[j][0] = res.getString("TaskCommonDim");
for (int i = 1; i < listWidth; i++) {
list[j]** = res.getString(choices[i-1] + ".Piority");
}
}
}
con.close();
}
catch(Exception e) {
e.printStackTrace();
}
System.out.println(list);
return list;
}```
Wie könnte man vorgehen?
Hi,
ich muss das wirklich auf dieser Weise machen, da ich in einer anderen Klasse aus den einzelnen Tabellen Start und End-Zeiten ziehe und anhand des Arrays: Object[] choices = managerAlg.getChoosedMod();
werden die For-Schleifen bedient! Hier wird dann Dauer berechnet. Es wir zunächst die mindest StartZeit bestimmt und dann weitergerechnet.
[SQL]ID Tabelle1 Tabelle2
D68D6B13-6385-4DD7-B0C4-13B04CD353F8 |06:25:30 - 06:45:30 |06:45:30 - 06:52:30
A40326B4-94EA-4CF2-846B-5DA4DB94EA21 |06:52:30 - 07:22:30 |07:22:30 - 07:42:30
94CF5424-7DC9-4DDC-8812-C9363417BA43 |07:42:30 - 07:59:30 |07:59:30 - 08:19:30
4863A15B-7F3D-45CC-B1E0-3AAFA2BD62B5 |08:19:30 - 08:36:30 |08:36:30 - 08:55:30
2D97A2AA-53F5-4A9E-BF10-69E2B8C17BA6 |08:55:30 - 09:00:30 |09:00:30 - 09:16:30
E8DB768B-2E08-4C33-A6C8-60F3A7FB2697 |09:16:30 - 09:21:30 |09:21:30 - 09:36:30[/SQL]
Ich wollte nun schon im Array vorsortieren, damit die Spalten der Tabelle schon je nach Prio stehen. Und natürlich Zwecks weiterer Berechnungen.
Hat jemand ne Idee? Bitte!!
Hi,
ich danke Dir, aber verstehe den Umgang damit nicht!
Ich habe ein Object[] as beinhaltet irgendwelche Tabellennamen: z.B. m1,m2,m3
und ein Object[], dass deren Prioritäten anzeigt: z.B. 3,2,1.
Nun möchte ich das der erste Object[] sich nach den Nummern sortiert, so dass m3,m2,m1 herauskommt!
}```
Da steht a sei der zu ordneter Array und muss ich c erst implementieren?:confused:
Die Vorlage ist Super! Aber wie ich es auf meinem Problem adaptieren kann ist mir noch ein kleines Rätsel!
Ich muß meine beiden Arrays irgendwie in dies Template Klasse einbauen. Aber wie?
Ich hab das so gemacht:
private AlgorithmManagement managerAlg;
private Object[] name = managerAlg.getChoosedMod();
private int[] list = managerAlg.getPiorityData().getModulesPrio();
public PioModTemplate(Object[] name, int[] list) {
this.name = name;
this.list =list;
}
public Object[] getModules() {
return this.name;
}
public int[] getPrio() {
return this.list;
}
}```
Aber mein Ergebnis soll ja ein Array sein, dass mir ein geordnetes getModules() nach der nummerischen Ordnung von getPrio() ausgibt.
Ich verstehe nicht wie ich dann aus dem obigen meine compare-Methode bauen soll(wenn die Template Klasse in Ordnung wäre!).
Würde mich über jeden Tipp freuen!
Mit diesem Template kann ich jetzt nicht so viel anfangen …
Aber in Anlehnung an
Ich habe ein Object as beinhaltet irgendwelche Tabellennamen: z.B. m1,m2,m3
und ein Object, dass deren Prioritäten anzeigt: z.B. 3,2,1.
Nun möchte ich das der erste Object sich nach den Nummern sortiert, so dass m3,m2,m1 herauskommt!
gehe ich davon aus, dass du einen Array mit Objekten hast, und einen Array mit Prioritäten, und die Objekte nach den Prioritäten geordnet werden sollen?!
Wenn’s das war, könnte das ungefähr so gehen:
import java.util.*;
class PrioSortTest
{
public static void main(String args[])
{
Object names[] = new Object[] { "m1", "m2", "m3" };
int priorities[] = new int[] { 2, 1, 3 };
System.out.println("Input: ");
System.out.println(Arrays.toString(names));
sort(names, priorities);
System.out.println("Sorted: ");
System.out.println(Arrays.toString(names));
}
private static void sort(Object objects[], int priorities[])
{
class PrioObject
{
Object object;
int priority;
}
List<PrioObject> list = new ArrayList<PrioObject>();
for (int i=0; i<objects.length; i++)
{
PrioObject ps = new PrioObject();
ps.object = objects**;
ps.priority = priorities**;
list.add(ps);
}
Collections.sort(list, new Comparator<PrioObject>()
{
public int compare(PrioObject a, PrioObject b)
{
return a.priority - b.priority;
}
});
for (int i=0; i<objects.length; i++)
{
PrioObject ps = list.get(i);
objects** = ps.object;
}
}
}
Vielen Dank! Mein Problem ist nur noch folgendes:
Die Beiden Arrays
int priorities[] = new int[] { 2, 1, 3 };```
werden von mir ausgelesen. Das erstere aus einer ini-Darei und das zweite durch eine DB Anfrage.
Wie kann ich ein "new" Anweisung aus vorhandenen Arrays machen?:confused:
Das mit den “geschweiften Klammern” geht nur einmalig beim Initialisieren. Ansonsten musst du auf gewöhnliche Weise über die Indices auf dein Array zugreifen.