在java中使用Iterator

时间:2011-09-27 22:08:31

标签: java iterator

我有一个像

这样的对象类型列表
List<Object> getRecords = records.getAllRecords();
ArrayList<String> recordsDetail = new ArrayList<String>();
recordsDetail = this.getRecordsDetail(getRecords.get(3));
model.addAttribute("recordsDetail", getRecords.get(3));

但是当我编写像

这样的方法时
ArrayList<String> getRecordsDetail(Object records) {

}

现在我不知道如何记录records因为记录有一些值作为向量。

任何帮助将不胜感激。谢谢

如果我在JSP中使用spring MVC做同样的事情,那就像

一样好
<c:forEach var="sData" items="${recordsDetail}">
        <tr>
            <td>
                <table border="0">
                    <c:forEach var="sValues" items="${sData}" varStatus="colNo">
                        <c:choose>
                            <c:when test="${colNo.count> 5 and colNo.count<9}">
                                <tr>
                                    <td>${sValues}&nbsp;&nbsp;</td>
                                <tr>
                            </c:when>
                        </c:choose>
                    </c:forEach>
                </table>
                <hr>
            </td>
        </tr>
    </c:forEach>

但是我想在spring MVC控制器中进行这个处理并在JSP中显示最终结果。所以我无法找到如何在控制器类中迭代records的方法。

2 个答案:

答案 0 :(得分:1)

一些事情。

首先,不要初始化局部变量,然后立即将其设置为某个东西。相反,只需初始化为所需的值(注意列表类型而不是ArrayList类型,这是一个很好的做法,或者可能只是我的偏好)。

List<String> recordsDetail = this.getRecordsDetail(getRecords.get(3));

接下来,迭代records

List<String> getRecordsDetail(Object records)
{
  if (records instanceof Vector)
  {
    Object blam;
    Iterator iterator;
    Vector recordVector = (Vector)records;

    iterator = recordVector.iterator();
    while (iterator.hasNext())
    {
      blam = iterator.next();
      // do something with blam.
    }
  }
}

我不知道记录元素的类型,所以如果您知道类型,我使用Object,然后使用它而不是Object。

答案 1 :(得分:0)

这应该是

ArrayList<String> getRecordsDetail(List<Object> records) {

}

如果您可以更加具体地了解records.getAllRecords()返回的对象类型,则应使用List<the-object-type-returned-by-getAllRecords>