这个应该怎么去实现?

用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.

用Java
这个应该怎么写?

[code="java"]
public class Test8
{
/**
* 排列 用1、2、2、3、4、5这六个数字,打印出所有不同的排列, 如:512234、412345等,要求:"4"
* 不能在第三位,"3"与"5"不能相连.
*
* @param sb
* 符合条件的数字
* @param list
* 输入的数字
* @param index
* 第几位
* @param k
* 已经用过的数组下标
*
* @return
*/
public static Object a2(StringBuffer sb, String[] list, int index, String k)
{
String[] objs = list;

    for (int i = 0; i < objs.length; i++)
    {

// int ff = 0;
// // 是否第一次,第一次不需要判断是否用过
// if (!k.equals("-1"))
// {
// String[] iss = k.split(",");
// for (int j = 0; j < iss.length; j++)
// {
// // 判断该数字是否已经用过了
// if (iss[j].equals(i + ""))
// {
// ff = 1;
// break;
// }
// }
// }
// if (ff == 1)
// {
// // 用过的数字不能再用,重新计算
// continue;
// }

        sb.append(objs[i] + ",");

        if (list.length - 1 == index)
        {
            String[] end = sb.toString().split(",");

            int temp = 0;
            for (int j = 0; j < end.length; j++)
            {
                // 3,5不能相临
                if (j != end.length - 1 && "3".equals(end[j])
                        && "5".equals(end[j + 1]))
                {
                    temp = 1;
                    break;
                }
            }
            // 4不能在第3位
            if (!"4".equals(end[2]) && temp == 0)
            {
                System.out.println(sb.toString());
            }
            sb.delete(sb.length() - 2, sb.length());
            continue;
        }
        else
        {
            a2(sb, objs, ++index, k + "," + i);
        }
        --index;
        sb.delete(sb.length() - 2, sb.length());
    }

    return "";
}

public static void main(String[] args)
{
    String in = "1,2,2,3,4,5";
    String[] objs = in.split(",");
    StringBuffer sb = new StringBuffer();
    a2(sb, objs, 0, "-1");
}

}
[/code]

// 注释掉的的部分是为不可重复的,一个数字只能出现一次。
// 1,2,3,4,5,6,,不会出现:1,2,3,4,5,5

for (int i = 122345; i <= 543221; i++) {
String tmp = "" + i;
if (tmp.matches("[1-6]{2}[12235][1-6]{3}") && tmp.replaceAll("(\d)(?=\d*\1)|35|53", "").length() == 6 ) {
System.out.println(i);
}
}