Java tutorial
//package com.java2s; //License from project: Apache License import java.util.*; public class Main { private static <T> void permute(Map<String, T> basePermutation, List<String> remainingKeys, Map<String, List<T>> parameterValues, List<Map<String, T>> returnList) { String thisKey = remainingKeys.get(0); remainingKeys = remainingKeys.subList(1, remainingKeys.size()); for (T value : parameterValues.get(thisKey)) { Map<String, T> permutation = new HashMap<String, T>(basePermutation); permutation.put(thisKey, value); if (remainingKeys.size() == 0) { returnList.add(permutation); } else { permute(permutation, remainingKeys, parameterValues, returnList); } } } }