我不是一个真正的编码人员,所以请谈谈我所谓的代码的不同方面。对于实际上被称为事物的事情我可能是错的......
无论如何我(相信)我有一个项目数组,其中包含附加到每个项目的大量不同数据。然后我迭代这个数组将内容放入我的jsp中。问题是数组包含重复项,我不想在主页上的演示文稿中重复。
我已经像一个怪物谷歌搜索,我发现删除重复项的方法是将数组转换为一个集合,因为一个集合不能包含重复项。很公平。我已经检查了不同的页面,描述了如何进行,但我不明白:(
这可能非常简单,但是从我可以做到的,这些集合包含字符串,并且不会为我做,因为我的项目有很多数据附加到他们item.name,item.type等。
我使用的代码是
<c:forEach items="${results.searchResults}" var="foundItem" varStatus="status">
<c:set var="curItem" value="${foundItem.item}" />
<%-- get item details --%>
<xmlfeed:getItemXML item="${curItem}" />
</c:forEach>
我想要做的是确保所有的curItem都是独一无二的。我敢打赌,最好的方法是确保将“results.searchResults”数组放入一个集合然后再转回,但我只是不明白该怎么做。
或许值得一提的是,上面的代码实际上已经在一个带有以下taglibs的标签内:
taglib prefix =“c”uri =“http://java.sun.com/jsp/jstl/core”
taglib prefix =“fmt”uri =“http://java.sun.com/jsp/jstl/fmt”
以及当然的自定义xmlfeed tablib
答案 0 :(得分:1)
在result
对象中有一个List<Item> searchResults
变量?您可以将其更改为Set<String> searchResults;
,并在设置器或任何其他设置searchResults
变量的数据的方法中进行this.searchResults = new HashSet<String>(resultlist);
以下代码可能不是您的确切方式,但它将有助于找到您自己的方式.....
public class Result {
private List<String> result;
private Set<String> searchResults;
public Set<String> getSearchResults() {
return searchResults;
}
public void setResult(List<String> result) {
this.result = result;
this.searchResults = new HashSet<String>(result);
}
}
Servlet代码,
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("A");
list.add("B");
list.add("A");
Result result = new Result();
result.setResult(list);
request.setAttribute("result", result);
request.getRequestDispatcher("testPage.jsp").forward(request, response);
在JSP中,
<c:forEach items="${result.searchResults}" var="foundItem" varStatus="status">
<c:set var="curItem" value="${foundItem}" />
${curItem}<br>
</c:forEach>
答案 1 :(得分:0)
public Set<String> searchResults()
{
List<String> list = new ArrayList<String>();
list.add("A");list.add("B"); list.add("A");list.add("B");list.add("A");
return new HashSet<String>(list);
}
以上代码返回唯一列表。