0

我的表单中有两个数组,如下所示,我正在使用 jsp 向用户显示数组的值。

Trip[] tripArray = new Trip[];
Route[] routeArray = new Route[];


Trip Class: 
public class Trip{
    private String name; 
    private String address; 
    private String job; 
}

Route class: 
public class Route{
    private String myName; 
    private String myAddress;
    private String myJob; 
}

我的jsp文件:

<logic: notEmpty name="myForm" property="tripArray">
<logic:iterate id="data" name="myForm" property="tripArray" type="com.example.Trip">
    <td><bean:write name="data" property="name" /></td>
    <td><bean:write name="data" property="address"/></td>
    <td><bean:write name="data" property="job"/></td>
</logic:iterate>
</logic:notEmtpty>

<logic: notEmpty name="myForm" property="routeArray">
<logic:iterate id="data" name="myForm" property="routeArray" type="com.example.Route">
    <td><bean:write name="data" property="myName" /></td>
    <td><bean:write name="data" property="myAddress"/></td>
    <td><bean:write name="data" property="myJob"/></td>
</logic:iterate>
</logic:notEmtpty>

我希望能够对正在显示的结果进行排序。由于我有两个数组,我可以合并这两个数组,对其进行排序并使用新的合并数组显示结果。

但这也需要我更改我的 jsp 文件。而且我相信这样做的工作量太大了。

有没有另一种方法可以做到这一点而无需更改我的 jsp 文件并且无需合并数组?

4

1 回答 1

1

使用 Arrays.sort 对数组进行排序:

    String[] examples = new String[] {"test", "a", "long one", "", "one was blank (this is longest)"};
    Arrays.sort(examples, new Comparator<String>() {

        @Override
        public int compare(String arg0, String arg1) {
            if(arg0.length() < arg1.length())
                return -1;
            if(arg0.length() > arg1.length())
                return 1;
            return 0;
        }

    });
    System.out.println(Arrays.toString(examples));

会有输出:

[, a, test, long one, one was blank (this is longest)]

我在那里设置的比较器设置为先有最短的,最后有最长的;您可以根据需要调整比较器。

于 2012-08-07T17:33:23.747 回答