Java 排列算法解决方法

Java 排列算法
现在要计算一个,总共有10位数,每一位只有0和1,现在想排列出所有的组合。
例如 0 0 0 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0 0 1


那位大神有兴趣的,帮忙研究一下,先考虑准确性,再考虑算法。
------解决方案--------------------
for(int i=0;i<1024;i++)
{
String s = Integer.toBinaryString(i);
System.out.println(s);
}
------解决方案--------------------
我还没有想出来,但是感觉可以往这个方向想,我先写出来,看能不能给后面的同学一些启发:

因为只有0,1两种数字,因此可以先统计一下0和1的个数,最坏的情况是5,5分
如果只有1个0或者一个1
则排列只有10种,只要把这个单独的0或者1放好就行了
如果有2个0或者1
则排列有10*9种,把这两个数字位置放好其他的就放好了

依次类推
最坏的情况是5个0和5个1
排列有 10*9*8*7*6种

问题的关键是如何放置这些数字,还在思考当中
------解决方案--------------------
只有 0,1不就是2进制?.循环+1,转为二进制。再补0
------解决方案--------------------
引用:
只有 0,1不就是2进制?.循环+1,转为二进制。再补0

for(int i=0;i<1024;i++)
{
String str = Integer.toBinaryString(i);
 for(int j=0,k=str.length();j<10-k;j++){
 str = "0" + str;
 }
System.out.println(str);
}

------解决方案--------------------
int count = 0;
for(int i =1; i <10;i++){
     int  top = 1;
     for(int j = 10; j >=10 -(i-1); j--){
           top *= j ;
     }
    int bottom = 1;
     for(int k= 1; k <=i ; k++){
           bottom *= k;
     }
   count += top/bottom;
}
------解决方案--------------------

for (int i = 0; i < 1024; i++) {
String s = StringUtils.leftPad(Integer.toBinaryString(i), 8, "0");
System.out.println(s);
}