Gå til innhold

Hjelp til Rekursjon/permutasjon...


Anbefalte innlegg

Noen som kan hjelpe meg med følgende...?

 

Har en liste med lister, eks:

 

liste(liste(e1_1, e1_2), liste(e2_1, e2_2, e2_3), liste(e3_1))

 

finnes det noen enkel måte å parsere denne "listen av lister" på, slik at jeg får følgende:

liste(list(e1_1, e2_1, e3_1), list(e1_1, e2_2, e3_1), list(e1_1, e2_3, e3_1),
  list(e1_2, e2_1, e3_1), list(e1_2, e2_2, e3_1), list(e1_2, e2_3, e3_1))

 

Jeg har altså følgende java-kode:

class Test {

public static void main(String[] args) {

	Test t = new Test();
	t.kjor();

}

void kjor() {

	ArrayList<ArrayList> listlist = new ArrayList<ArrayList>();
	ArrayList<String> list1 = new ArrayList<String>();
	ArrayList<String> list2 = new ArrayList<String>();
	ArrayList<String> list3 = new ArrayList<String>();

	list1.add("e1_1");
	list1.add("e1_2");

	list2.add("e2_1");
	list2.add("e2_2");
	list2.add("e2_3");

	list3.add("e3_1");

	listlist.add(list1);
	listlist.add(list2);
	listlist.add(list3);

	ArrayList<ArrayList> newListList = genererList(listlist);
}
}

 

Har slitet med denne her i en hel dag... Så hvis noen kunne hjelpe meg, er jeg kjempe takknemlig...

På forhånd takk!

Lenke til kommentar
Videoannonse
Annonse

package test;

import java.util.ArrayList;
import java.util.Arrays;

public class Test {

public static void main(String[] args) {

	Test t = new Test();
	t.kjor();

}

void kjor() {

	ArrayList<ArrayList<String>> listlist = new ArrayList<ArrayList<String>>();
	ArrayList<String> list1 = new ArrayList<String>();
	ArrayList<String> list2 = new ArrayList<String>();
	ArrayList<String> list3 = new ArrayList<String>();

	list1.add("e1_1");
	list1.add("e1_2");

	list2.add("e2_1");
	list2.add("e2_2");
	list2.add("e2_3");

	list3.add("e3_1");

	listlist.add(list1);
	listlist.add(list2);
	listlist.add(list3);

	ArrayList<ArrayList<String>> newListList = genererList(listlist);
	System.out.println(newListList);
}

public ArrayList<ArrayList<String>> genererList(ArrayList<ArrayList<String>> list) {

	ArrayList<ArrayList<String>> newList = new ArrayList<ArrayList<String>>();
	ArrayList<String> tempList = new ArrayList<String>();

	step(0, tempList, list, newList);
	return newList;
}

public void step(int index, ArrayList<String> tempList, ArrayList<ArrayList<String>> orgList, ArrayList<ArrayList<String>> newList) {

	if(index == orgList.size()) {
		newList.add((ArrayList<String>)tempList.clone());
		return;
	}		

	for(int i=0; i<orgList.get(index).size(); i++) {
		tempList.add(orgList.get(index).get(i));
		step(index+1, tempList, orgList, newList);
		tempList.remove(tempList.size()-1);
	}
}

}

 

Sånn kan det feks gjøres. Sikkert mulig å optimalisere litt, men skal virke greit nok.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...