Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Create a powerset in Java

Posted on 2011-02-17
Medium Priority
1,244 Views
Hi,

In Java I want to create a powerset, when i give  a set and a number for the size for e.g.

{1,2,3,4} set:3
------------------
{1,2,3}
{1,2,4}
{1,3,4}
{2,3,4}

or
{1,2,3} set 2
{1,2}
{1,3}
{2,3}

thanks
0
Question by:kimia_az
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4

LVL 47

Accepted Solution

for_yan earned 2000 total points
ID: 34922615
0

LVL 47

Expert Comment

ID: 34922622
This implementation is for all sets, I guess it is easy to modify only limiting to
certain size
0

LVL 92

Expert Comment

ID: 34922645
0

LVL 47

Assisted Solution

for_yan earned 2000 total points
ID: 34922653

This will print only sets of 2 out of {1,2,3}

``````import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SetUtils {
public static <T> Set<Set<T>> powerSet(Set<T> originalSet) {
Set<Set<T>> sets = new HashSet<Set<T>>();
if (originalSet.isEmpty()) {
return sets;
}
List<T> list = new ArrayList<T>(originalSet);
Set<T> rest = new HashSet<T>(list.subList(1, list.size()));
for (Set<T> set : powerSet(rest)) {
Set<T> newSet = new HashSet<T>();

}

return sets;
}

public static void main(String[] args){
Set<Integer> mySet = new HashSet<Integer>();
for (Set<Integer> s : SetUtils.powerSet(mySet)) {
if(s.size() == 2)
System.out.println(s);
}

}
}
``````
0

LVL 47

Expert Comment

ID: 34922911

This will print only sets of 3 out of {1,2,3,4}  a little bit nicer:

``````import java.util.*;

public class SetUtils {
public static <T> Set<Set<T>> powerSet(Set<T> originalSet) {
Set<Set<T>> sets = new HashSet<Set<T>>();
if (originalSet.isEmpty()) {
return sets;
}
List<T> list = new ArrayList<T>(originalSet);
Set<T> rest = new HashSet<T>(list.subList(1, list.size()));
for (Set<T> set : powerSet(rest)) {
Set<T> newSet = new HashSet<T>();

}

return sets;
}

public static <T> Set<Set<T>> powerSet1( Set<T>mySet, int n){
Set<Set<T>> sets1 = new  HashSet<Set<T>>();
Set originalSet =  SetUtils.powerSet(mySet);
Iterator it = originalSet.iterator();
while(it.hasNext()) {
Set s = (Set) it.next();
}

return sets1;
}

public static void main(String[] args){
Set<Integer> mySet = new HashSet <Integer>();
for (Set <Integer> s : SetUtils.powerSet1(mySet, 3)) {
System.out.println(s);
}

}
}
``````
0

LVL 4

Expert Comment

ID: 34923511
``````int setLength = 3;
int[] array = new int[]{1,2,3,4};
for(int i=0;i<array.length-2;i++)
{
for(int j=i+1;j<array.length -1;j++)
{
for(int k=j+1;k<array.length;k++)
{
int[] temp = new int[setLength];
temp[0] = array[i];
temp[1] = array[j];
temp[2] = array[k];

System.out.println(temp[0]+","+temp[1]+","+temp[2]);
}
}
}
``````
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
###### Suggested Courses
Course of the Month8 days, 13 hours left to enroll