How to Compute the Cartesian Product of an Arbitrary Number of Sets in Java?
Cartesian Product of an Arbitrary Number of Sets in Java
When dealing with multiple sets, a common operation is computing their cartesian product, which generates a set containing all possible combinations of elements from the input sets. To facilitate this in Java, let's explore a solution that handles an arbitrary number of sets.
Recursive Approach for Cartesian Product
The following recursive Java method, cartesianProduct, calculates the cartesian product of any number of sets:
public static Set<Set<Object>> cartesianProduct(Set<?>... sets) { if (sets.length < 2) throw new IllegalArgumentException("Can't have a product of fewer than two sets (got " + sets.length + ")"); return _cartesianProduct(0, sets); }
The recursive helper method, _cartesianProduct, constructs the cartesian product by iteratively adding elements from each set to the accumulating sets:
private static Set<Set<Object>> _cartesianProduct(int index, Set<?>... sets) { Set<Set<Object>> ret = new HashSet<Set<Object>>(); if (index == sets.length) { ret.add(new HashSet<Object>()); } else { for (Object obj : sets[index]) { for (Set<Object> set : _cartesianProduct(index + 1, sets)) { set.add(obj); ret.add(set); } } } return ret; }
Example Usage
To demonstrate the usage of this method, consider the example provided in the question, where we have three sets containing objects of classes Person, Gift, and GiftExtension. We can obtain the cartesian product of these sets as follows:
Set<Person> persons = ...; Set<Gift> gifts = ...; Set<GiftExtension> giftExtensions = ...; Set<Set<Object>> cartesianProduct = cartesianProduct(persons, gifts, giftExtensions);
The resulting cartesianProduct will contain sets representing all possible combinations of persons, gifts, and gift extensions.
Generic Type Information
It's important to note that Java's type system doesn't allow for methods to return generic types with an arbitrary number of parameters. This means that the cartesianProduct method returns Set
The above is the detailed content of How to Compute the Cartesian Product of an Arbitrary Number of Sets in Java?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

Start Spring using IntelliJIDEAUltimate version...

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

When using TKMyBatis for database queries, how to gracefully get entity class variable names to build query conditions is a common problem. This article will pin...
