Another simple way to get combination of array:
public class Combinations {
public static void main(String[] args) {
// TODO Auto-generated method stub
String arr[]={"a","b","c","d"};
int combCnt=getFactorial(arr.length);
int comb=Integer.parseInt(getBinaryString(arr.length,2);
//System.out.println(comb);
Vector<String>combVect= getBinary(comb,arr.length);
String temp="";
for(String test:combVect)
{
temp="";
for(int l=0;l<test.length();l++)
{
if(test.charAt(l)=='1')
{
temp=temp+arr[l];
}
}
System.out.println(temp);
}
}
public static Vector<String> getBinary(int comb,int length)
{
Vector<String> combVect=new Vector<>();
for(int l=1;l<=comb;l++)
{
combVect.add(String.format("%"+length+"s", Integer.toBinaryString(l)).replace(" ", "0"));
//System.out.println(String.format("%"+length+"s", Integer.toBinaryString(l)).replace(" ", "0"));
}
return combVect;
}
static int getFactorial(int num)
{
int number=1;
for(int k=num;k>0;k--)
{
number=number*k;
}
return number;
}
static String getBinaryString(int lenght)
{
StringBuilder binaryBuilder=new StringBuilder()
for(int k=0;k<lenght;k++)
{
binaryBuilder.append("1");
}
return binaryBuilder.toString();
}
}
public class Combinations {
public static void main(String[] args) {
// TODO Auto-generated method stub
String arr[]={"a","b","c","d"};
int combCnt=getFactorial(arr.length);
int comb=Integer.parseInt(getBinaryString(arr.length,2);
//System.out.println(comb);
Vector<String>combVect= getBinary(comb,arr.length);
String temp="";
for(String test:combVect)
{
temp="";
for(int l=0;l<test.length();l++)
{
if(test.charAt(l)=='1')
{
temp=temp+arr[l];
}
}
System.out.println(temp);
}
}
public static Vector<String> getBinary(int comb,int length)
{
Vector<String> combVect=new Vector<>();
for(int l=1;l<=comb;l++)
{
combVect.add(String.format("%"+length+"s", Integer.toBinaryString(l)).replace(" ", "0"));
//System.out.println(String.format("%"+length+"s", Integer.toBinaryString(l)).replace(" ", "0"));
}
return combVect;
}
static int getFactorial(int num)
{
int number=1;
for(int k=num;k>0;k--)
{
number=number*k;
}
return number;
}
static String getBinaryString(int lenght)
{
StringBuilder binaryBuilder=new StringBuilder()
for(int k=0;k<lenght;k++)
{
binaryBuilder.append("1");
}
return binaryBuilder.toString();
}
}