Produto Cartesiano

Pessoal, alguém tem algum algoritmo para fazer o produto carteziano de arrays?

tipo:
a[a, b, c], b[a, b,c]

Quero

a[0] x b[0] = aa
a[0] x b[1] = ab
a[0] x b[2] = ac
a[1] x b[0] = ba
a[1] x b[1] = bb
a[1] x b[2] = bc
a[2] x b[0] = ca
a[2] x b[1] = cb
a[2] x b[2] = cc

Já tentou usar um loop dentro do outro???

Você quer multiplicar duas matrizes? É só procurar - por exemplo, em http://www.ee.ucl.ac.uk/~mflanaga/java/ -

Ola sapulha!? Loops nao da pq sao tres matrizes, dai digamos que vc tenha preenchido somente a matriz A e C, como o Loop de C esta dentro do Loop de B, nao montará corretamente… Este é um dos casos.

thingol, procurei la e nao encontrei nada referente ao que eu preciso… Uma vez o Plentz tinha precisado de algo parecido, mas eu nao me lembro como era o código. Era um código bem simples até pra fazer o que eu quero.

Poderia fazer algo no código, mas quero fazer algo dinâmico e que não fique “trash”…

Valeu…

giuliano, eu estava com o mesmo problema hoje e criei este método e funcionou beleza…

public static String[][] cartesianProduct(String[][] matrix, int startingIndex){
	if (matrix.length -1 == startingIndex){
		List<String[]> simpleProduct = new ArrayList<String[]>();
		for(String data:matrix[startingIndex]){
			simpleProduct.add(new String[]{data});
		}
		return simpleProduct.toArray(new String[][]{});	
	}
	String[] tokens = matrix[startingIndex];
	String[][] nextProduct = cartesianProduct(matrix,++startingIndex);
	List<String[]> cartesianProduct = new ArrayList<String[]>();
	for (String token:tokens){
		for (int index = 0;index<nextProduct.length;index++){
			List><String> product = new ArrayList<String>();
			product.add(token);
			product.addAll(Arrays.asList(nextProduct[index]));
			cartesianProduct.add(product.toArray(new String[]{}));
		}
	}
	return cartesianProduct.toArray(new String[][]{});
}

Um exemplo de teste seria:

public static void main(String[] args) {
	String[][] matrix = new String[][]{
			{"V.","Vl."},
			{"S.","Sta."},
			{"Terezinha",}
	};
	
	String[][] result = cartesianProduct(matrix,0);
	
	for (int index = 0; index<result.length;index++){
		StringBuilder sb = new StringBuilder();
		for (String data:result[index]){
			sb.append(data).append(" ");
		}
		System.out.println(sb.toString().trim()+";");
	}
}

e o resultado é:

Sei que o post é antigo, mas pode ajudar alguém que precise futuramente!
E isso ae galera!!!
:thumbup:
>