对显示的结果进行排序,而不合并两个数组

时间:2012-08-07 17:29:50

标签: java jsp sorting servlets struts

我的表单中有两个数组,我使用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文件和没有合并数组?

1 个答案:

答案 0 :(得分: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)]

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