目前,我想显示列表项中的所有值,但我想删除重复值并仅向用户显示唯一值。
我尝试实现以下代码,但它不起作用。
<tr>
<td class="col-ss1 col1">Currency</td>
<c:forEach items="${listProducts}" var="item" varStatus="loop">
<td class="col-ss1 "><c:forEach items="${item.terms}" var="term" varStatus="mainLoop">
<c:if test="${(mainLoop.index - 1) > 0}">
<c:forEach var="previousTerm" items="${item.terms}" begin="0"
end="${mainLoop.index-1}" varStatus="inner">
<c:if test="${term.currencyType == previousTerm.currencyType }">
<c:set var="flag" value="true"/>
</c:if>
</c:forEach>
</c:if>
<c:if test="${not flag}">${term.currencyType }</c:if>
</c:forEach></td>
</c:forEach>
<!-- <td class="col-ss1 col2">VNĐ / USD / EURO</td>
<td class="col-ss1 col3">VNĐ / USD / EURO</td>
<td class="col-ss1 col4">VNĐ / USD / EURO</td>
<td class="col-ss1 col5">VNĐ / USD / EURO</td> -->
强烈建议在服务器端的 java 类中执行此操作...
List<String> yourListContainingDublicates...
Set<String> uniqueElementsSet = new HashSet<String>(yourListContainingDublicates)
HashSet 构造函数通过调用元素的 equals() 方法来识别重复项。
您可以使用以下示例代码供您参考
public class MyDisticntElements {
public static void printDistinctElements(int[] arr){
for(int i=0;i<arr.length;i++){
boolean isDistinct = false;
for(int j=0;j<i;j++){
if(arr[i] == arr[j]){
isDistinct = true;
break;
}
}
if(!isDistinct){
System.out.print(arr[i]+" ");
}
}
}
public static void main(String a[]){
int[] nums = {5,2,7,2,4,7,8,2,3};
MyDisticntElements.printDistinctElements(nums);
}
}
我遇到了类似的问题,我只能使用 JSTL 来删除重复的条目,我决定修改你的代码,它似乎对我来说工作得很好。你可以试试这个:
<c:forEach items="${listProducts}" var="item" varStatus="loop"><td class="col-ss1 ">
<c:forEach items="${item.terms}" var="term" varStatus="mainLoop">
<c:set var="flag" value="false"/>
<c:forEach var="previousTerm" items="${item.terms}" begin="${mainLoop.index+1}" varStatus="inner">
<c:if test="${term.termName eq previousTerm.termName }">
<c:set var="flag" value="true"/>
</c:if>
</c:forEach>
<c:if test="${not flag}">
${term.currencyType }
</c:if>
</c:forEach></td>
</c:forEach>
从 EL 3.0 开始,EL Stream API 就成为可能,EL Stream API 作为 Collection Operations 功能的一部分引入。 EL 3.0 是 2017 年 9 月推出的 Java EE 8 / Servlet 4.0 的一部分。自 Tomcat 9.x、WildFly 14.x、GlassFish/Payara 5.x 等起可用。
distinct()
函数,您可以使用它来删除重复项。
因此你的方法可以重写如下:
<c:forEach items="${listProducts}" var="item">
<td>
<c:forEach items="${item.terms.stream().map(term -> term.currencyType).sorted().distinct().toList()}" var="currencyType">
${currencyType}<br/>
</c:forEach>
</td>
</c:forEach>