s:iterator输出key为一个对象,value为一个List集合的Map

简介: 情景: 前几天想用struts2的标签来迭代一些数据, 但一般都会用List来迭代, 这个很容易, 而且官方文档也有详细的例子。 Map<Topic, List<Item>> 我要迭代这个map, 在页面上显示。 [java] view plaincopyprint? public class Topic{     private 

情景:

前几天想用struts2的标签来迭代一些数据, 但一般都会用List来迭代, 这个很容易, 而且官方文档也有详细的例子。

Map<Topic, List<Item>>

我要迭代这个map, 在页面上显示。

  1. public class Topic{  
  2.    private Long id;  
  3.    private String title;  
  4.    //setter、getter方法省略  
  5. }  
  6. public class Item{  
  7.      private Long id;  
  8.      private String content;  
  9.      private Topic topic;  
  10.      //setter、getter方法省略  
  11. }  
public class Topic{
   private Long id;
   private String title;
   //setter、getter方法省略
}
public class Item{
     private Long id;
     private String content;
     private Topic topic;
     //setter、getter方法省略
}
  1. <s:iterator value="map" id="column">  
  2.      <s:property value="#column.key.title">  
  3.      <s:iterator value="#column.value">  
  4.             <s:property value="content">  
  5.       </s:iterator>  
  6. </s:iterator>  
<s:iterator value="map" id="column">
     <s:property value="#column.key.title">
     <s:iterator value="#column.value">
            <s:property value="content">
      </s:iterator>
</s:iterator>

但是上面这样的代码能够迭代出数据, 但是个人认为一般迭代map也许不是很好的办法。

因为map是不能够保证每次的排序都是有顺序的, 所以一般还是考虑用List代替Map。

将上面的Topic类添加一个属性:

  1. public class Topic{  
  2.      private Long id;  
  3.      private String title;  
  4.      private List<Item> items;  
  5.      //setter、getter方法省略  
  6. }  
public class Topic{
     private Long id;
     private String title;
     private List<Item> items;
     //setter、getter方法省略
}

这样就可以                   List<Topic>

  1. <s:iterator value="list">  
  2.      <s:property value="title">  
  3.      <s:iterator value="items">  
  4.             <s:property value="content">  
  5.       </s:iterator>  
  6. </s:iterator>  
<s:iterator value="list">
     <s:property value="title">
     <s:iterator value="items">
            <s:property value="content">
      </s:iterator>
</s:iterator>

这样使用的好处就是可以控制元素出现的顺序,不会像map一样。

目录
相关文章
|
21天前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
55 18
你对Collection中Set、List、Map理解?
|
14天前
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
51 20
|
2月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
69 5
|
1月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
45 0
|
2月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
29 3
|
2月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
383 7
|
3月前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
42 5
|
3月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
26 3
|
6月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1037 1
|
5月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。