Maison >Java >javaDidacticiel >Comment puis-je calculer efficacement le produit cartésien de plusieurs ensembles en Java ?
Calcul efficace du produit cartésien pour plusieurs ensembles
L'obtention du produit cartésien de plusieurs ensembles peut être une opération utile en programmation. Cela implique de générer un nouvel ensemble contenant toutes les combinaisons possibles d’éléments à partir des ensembles d’entrée. En Java, il existe quelques bibliothèques qui peuvent faciliter cette tâche.
Solution récursive pour un nombre arbitraire d'ensembles
Cependant, si le nombre d'ensembles varie dynamiquement, un une solution récursive peut être implémentée :
public static Set<Set<Object>> cartesianProduct(Set<?>... sets) { if (sets.length < 2) throw new IllegalArgumentException("Product requires at least two sets (got " + sets.length + ")"); return _cartesianProduct(0, sets); } private static Set<Set<Object>> _cartesianProduct(int index, Set<?>... sets) { Set<Set<Object>> ret = new HashSet<>(); if (index == sets.length) { ret.add(new HashSet<>()); } else { for (Object obj : sets[index]) { for (Set<Object> set : _cartesianProduct(index + 1, sets)) { set.add(obj); ret.add(set); } } } return ret; }
Cette fonction récursive prend un tableau d'ensembles en entrée et combine de manière itérative des éléments de chaque ensemble pour former le produit cartésien. Notez que cette solution ne peut pas conserver les informations de type générique en raison des limitations de Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!