Methoden rekursions ergebnisse in Array

P

pictureThis

Gast
hallo,
ich will einen Fahrrad-konfigurator entwerfen, welcher aus bestimmten einzelteilen verschiedene Fahrradkombinationen erstellt. Via kaskadenartiger Rekursion bekomme ich nun verschiedene Arrays zurück, welche die kombinationen beinhalten.
Das Problem ist aber, wie kann ich mir alle verschiedenen Arrays speichern?
 

earlgrey_tea

Aktives Mitglied
Am besten eignet sich dafür ein generischer Datentyp, also z.B. eine [JAPI]ArrayList[/JAPI]. Die wächst vor allem auch dynamisch mit, wenn du nicht weißt wie viele Arrays da rein sollen.
 
P

pictureThis

Gast
Java:
private List<BicyclePart>  getAll (){
		List<BicyclePart> possibleBikes = new ArrayList<BicyclePart>();
		possibleBikes.add(assembler());

so war meine idee. (assembler ist der rekursive konfigarations methode)
 

earlgrey_tea

Aktives Mitglied
So weit ich das ohne IDE und kompletten Quelltext beurteilen kann sieht das prinzipiell doch gut aus. Das einzige Problem ist, dass die Datentypen IMO nicht zusammenpassen.

ich geh mal davon aus, dass
Code:
assemble()
eine Liste zurückgibt. Dann müsste das Ergebnis in einen Datentyp:
Code:
ArrayList<List<BicyclePart>>
gepackt werden.
Code:
getAll()
sollte diesen dann auch als Rückgabetyp defnieren.

Beispiel:

Java:
package generischeDatenTypen;

import java.util.ArrayList;

public class ArrayInListeExample {
	private ArrayList<ArrayList<String>> meineListe; 
	
	public ArrayInListeExample(){
		meineListe = new ArrayList<ArrayList<String>>(); 
		
		ArrayList<String> arr1 = new ArrayList<String>(); 
		ArrayList<String> arr2 = new ArrayList<String>();
		ArrayList<String> arr3 = new ArrayList<String>();
		
		arr1.add("e");
		arr1.add("l");
		arr1.add("e");

		arr2.add("m");
		arr2.add("e");
		arr2.add("n");
		
		arr3.add("t");
		
		meineListe.add(arr1);
		meineListe.add(arr2);
		meineListe.add(arr3);
		
		System.out.println(meineListe);
	}
	
	public static void main(String[] args){
		ArrayInListeExample e = new ArrayInListeExample();
	}
}
 
Zuletzt bearbeitet:
P

pictureThis

Gast
Um diese Zeile geht es mir. Da die Rekursion mehrere Ergebnisse-arrays zurückliefern soll.

Java:
[COLOR="Red"]
possibleBikes.add((ArrayList<BicyclePart>)assembler(maxCost,0,lager,bike,0));[/COLOR]


private List<BicyclePart> assembler (long maxCost, long totalCost, List<BicyclePart> lager, List<BicyclePart> bike, int counter ){ // formatierung
		
		if (lager != null){
			
			for (int i = (lager.size() - 1) ; i >= 0; i--){
				if(lager.get(0).getClass().getSimpleName() == lager.get(i).getClass().getSimpleName()){   
					
					lager.remove(lager.get(i));
					totalCost += ((BicyclePart) (lager.get(i-1))).cost;
					if (maxCost >= totalCost) {
						bike.add(counter++,lager.get(i-1));
						return assembler(maxCost, totalCost, lager, bike, counter);
					}	
				}
			}
		}
		return bike;
		
	}
 

Neue Themen


Oben