获得3个变量的组合

时间:2015-12-04 03:10:08

标签: java combinations date-format

我有这4个阵列:

    String[] dayFormats = {"d"};
    String[] monthFormats = {"MM","MMM","MMMM"};
    String[] yearFormats = {"yy","yyyy"};
    String[] sepFormats = {" ",".","/"};

然后我希望用它们的所有概率填充ArrayList,如下所示:

  1. d MM yy
  2. d.MM.yy
  3. d / MM / YY
  4. ...
  5. YYYY / MMMM / d
  6. 获取格式的所有概率,用户可以使用它输入日期。

    我怎么能这样做? ,当然不是手动的方式!

1 个答案:

答案 0 :(得分:1)

这样的事情:

String[] dayFormats = {"d"};
String[] monthFormats = {"MM","MMM","MMMM"};
String[] yearFormats = {"yy","yyyy"};
String[] sepFormats = {" ",".","/"};
String[][][] orders = { { dayFormats, monthFormats, yearFormats },
                        { dayFormats, yearFormats, monthFormats },
                        { monthFormats, dayFormats, yearFormats },
                        { monthFormats, yearFormats, dayFormats },
                        { yearFormats, dayFormats, monthFormats },
                        { yearFormats, monthFormats, dayFormats } };
for (String[][] parts : orders)
    for (String sep : sepFormats)
        for (String p1 : parts[0])
            for (String p2 : parts[1])
                for (String p3 : parts[2])
                    System.out.println(p1 + sep + p2 + sep + p3);

输出(108种组合)

d MM yy
d MM yyyy
d MMM yy
d MMM yyyy
d MMMM yy
d MMMM yyyy
d.MM.yy
d.MM.yyyy
d.MMM.yy
d.MMM.yyyy
d.MMMM.yy
d.MMMM.yyyy
d/MM/yy
d/MM/yyyy
d/MMM/yy
d/MMM/yyyy
d/MMMM/yy
d/MMMM/yyyy
d yy MM
d yy MMM
d yy MMMM
d yyyy MM
d yyyy MMM
d yyyy MMMM
d.yy.MM
d.yy.MMM
d.yy.MMMM
d.yyyy.MM
d.yyyy.MMM
d.yyyy.MMMM
d/yy/MM
d/yy/MMM
d/yy/MMMM
d/yyyy/MM
d/yyyy/MMM
d/yyyy/MMMM
MM d yy
MM d yyyy
MMM d yy
MMM d yyyy
MMMM d yy
MMMM d yyyy
MM.d.yy
MM.d.yyyy
MMM.d.yy
MMM.d.yyyy
MMMM.d.yy
MMMM.d.yyyy
MM/d/yy
MM/d/yyyy
MMM/d/yy
MMM/d/yyyy
MMMM/d/yy
MMMM/d/yyyy
MM yy d
MM yyyy d
MMM yy d
MMM yyyy d
MMMM yy d
MMMM yyyy d
MM.yy.d
MM.yyyy.d
MMM.yy.d
MMM.yyyy.d
MMMM.yy.d
MMMM.yyyy.d
MM/yy/d
MM/yyyy/d
MMM/yy/d
MMM/yyyy/d
MMMM/yy/d
MMMM/yyyy/d
yy d MM
yy d MMM
yy d MMMM
yyyy d MM
yyyy d MMM
yyyy d MMMM
yy.d.MM
yy.d.MMM
yy.d.MMMM
yyyy.d.MM
yyyy.d.MMM
yyyy.d.MMMM
yy/d/MM
yy/d/MMM
yy/d/MMMM
yyyy/d/MM
yyyy/d/MMM
yyyy/d/MMMM
yy MM d
yy MMM d
yy MMMM d
yyyy MM d
yyyy MMM d
yyyy MMMM d
yy.MM.d
yy.MMM.d
yy.MMMM.d
yyyy.MM.d
yyyy.MMM.d
yyyy.MMMM.d
yy/MM/d
yy/MMM/d
yy/MMMM/d
yyyy/MM/d
yyyy/MMM/d
yyyy/MMMM/d

如果两个分隔符可以独立,请使用:

for (String[][] parts : orders)
    for (String sep1 : sepFormats)
        for (String sep2 : sepFormats)
            for (String p1 : parts[0])
                for (String p2 : parts[1])
                    for (String p3 : parts[2])
                        System.out.println(p1 + sep1 + p2 + sep2 + p3);