1

我有一个字符串列表,我想在 HTML 表格中显示,这些字符串尽可能均匀地分布在指定数量的列中。

public String toHtmlTable(Collection<String> values, int columns) {
    // TODO
}

我希望字符串显示如下:

A    E    I
B    F    J
C    G
D    H

(i.e. "<table><tr><td>A</td><td>E</td><td>I</td></tr>...</table>")

我不想要这个:

A    B    C
D    E    F
G    H    I
J

有什么好方法吗?

4

2 回答 2

2

一些代码可能会提供一些帮助:

我有点懒,还有两件事还没做:

  • <table></table>添加标签。这很简单。
  • <td></td>没有处理。

代码:

public void tt() {
    // you could ignore the ImmutableList stuff, it just prepares the string list, nothing more.
    final List<String> l = ImmutableList.of("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
    final int col = 3;
    final int size = l.size();
    final int n = size / col;
    final StringBuffer sb = new StringBuffer("");
    for (int i = 0; i <= n; i++) {
        int k = i;
        sb.append("<tr>\n");
        while (k < size) {
            sb.append("<td>" + l.get(k) + "</td>");
            k += n + 1;
        }
        sb.append("\n</tr>\n");
    }
    System.out.println(sb.toString());
}

输出:

<tr>
<td>a</td><td>e</td><td>i</td>
</tr>
<tr>
<td>b</td><td>f</td><td>j</td>
</tr>
<tr>
<td>c</td><td>g</td>
</tr>
<tr>
<td>d</td><td>h</td>
</tr>
于 2012-08-01T12:43:02.483 回答
0

假设您的表有n列并且您有x多个字符串,您最终需要

m = ceiling(x/n)行。所以你要做的就是在输出一行html时,相应地偏移你的变量。您的第一行输出应如下所示:

arr[0]    arr[m]        arr[2m]        arr[3m]      ....     arr[nm]

那么下一行将是:

arr[1]    arr[m+1]      arr[2m+1]      arr[3m+1]    ....     arr[nm+1]
arr[2]    arr[m+2]      arr[2m+2]      arr[3m+2]    ....     arr[nm+2]
....
arr[m-1]  arr[2m-1]     arr[3m-1]      arr[4m-11]   ....     arr[(n+1)m-1]

您可以弄清楚如何编写嵌套循环来输出它,这并不难。

每行表示如下:

arr[i]    arr[m+i]      arr[2m+i]      arr[3m+i]    ....     arr[nm+i]

i0(m-1)。_

我希望这有帮助。

于 2012-08-01T11:19:12.673 回答