【问题标题】:Use JSTL to display a Vector and skip duplicated data使用 JSTL 显示 Vector 并跳过重复数据
【发布时间】:2014-08-03 13:10:58
【问题描述】:

我有一个位置向量,其中国家、州和城市都作为字符串。我想将数据显示为:美国 |德克萨斯 |奥斯汀、达拉斯、休斯顿...加利福尼亚|洛杉矶,旧金山...

我有什么:

   <c:forEach items="${locations}" var="location" >
       <h4><c:out value="${location.country.name}"/></h4>
       <h4><c:out value="${location.state.name}"/></h4>
       <h4><c:out value="${location.city.name}"/></h4>
   </c:forEach>

如果国家和州名与最后一个值相同,那么跳过它们的最佳方法是什么。我确信我可以使用 currentCountry 和 currentState 的局部变量来不显示重复值。我只想知道最佳做法。

谢谢,

【问题讨论】:

    标签: java jsp foreach jstl


    【解决方案1】:

    最好和最简单的方法是将你的列表(在这个向量类型中)添加到一个集合中,例如一个 HashSet。您可以将 location.city.name 列表添加到集合中,通过循环,重复项将自动从集合中删除,然后显示您的城市集合。

     Set<String> setOfCities = new HashSet();
       for(int i = 0; i< setOfCities.size(); i++){
           setOfCities.add(location.city.name);
       }
    

    或者,如果您想直接添加非字符串类型的位置列表,则必须实现 Comparator 接口才能比较您的位置列表并删除重复项。 要覆盖 equals() 方法,你可以看这个帖子:https://stackoverflow.com/a/5741080/3010827

    【讨论】:

    • 谢谢,我试试看!
    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多