zoukankan      html  css  js  c++  java
  • list  遍历

    境,重点关注前后端代码的实现,给出后端java代码、前段struts标签代码,主要有如下4个例子:

    1. 遍历List<String>

    2. 遍历List<List<String>>

    3. 遍历UserEntity

    4. 遍历List<UserEntity>

    例子的详细代码请参考附件1,给出两个4个例子的运行截图(如下图1):
     图1:遍历Listd的4个例子运行结果
                       图1:遍历Listd的4个例子运行结果
    关键词:Struts标签,iterator迭代器,List<String>,List<List<String>>

    1、遍历List<String>  

    (1)后台TestAction.java 部分代码: 

             // TODO 给list赋值
             if (list==null) {
                 list=new ArrayList<String>();
                 list.add("刘备");
                 list.add("关羽");
              list.add("张飞");
                list.add("赵云");
             }

    (2)前台jsp+s标签部分源代码:

                          <%--List<String>遍历--%>
                          <table width="242" height="256" border="1" cellpadding="1"
                              cellspacing="1">
                              <caption>
                                  List&ltString&gt遍历
                              </caption>
                              <tr>
                                  <%--
                              说明:<s:iterator id="别名" value="后台List变量名">
                                   <s:if test="#别名!=null">
                                 --%>
                                 <s:iterator id="li" value="list">
                                     <td>
                                         <s:if test="#li!=null">
                                             <s:property />
                                         </s:if>
                                     </td>
                                 </s:iterator>
                             </tr>
                         </table>

    注:遍历List<String>运行结果参考上图1(左上)

    2、遍历List<List<String>>

    (1)后台TestAction.java 部分代码: 

              // TODO 给listList赋值(二维列表List)
              if (listList==null) {
                  listList=new ArrayList<List<String>>();
                  List<String> li=new ArrayList<String>();
                  li.add("姓名");
                  li.add("势力");
                 li.add("职务");
                  listList.add(li);
                  /*List为引用类型(以地址方式保存一维List对象),
                 添加不同List到二维列表需再实例化    */        
                 li=new ArrayList<String>();
                 li.add("刘备");
                 li.add("蜀");
                 li.add("老大");
                 listList.add(li);
                 li=new ArrayList<String>();
                 li.add("关羽");
                 li.add("蜀");
                 li.add("老2");
                 listList.add(li);
                 li=new ArrayList<String>();
                 li.add("张飞");
                 li.add("蜀");
                 li.add("老3");
                 listList.add(li);
                 li=new ArrayList<String>();
                 li.add("赵云");
                 li.add("蜀");
                 li.add("大将");
                 listList.add(li);

    (2)前台jsp+s标签部分源代码:

         <%--List<List<String>>遍历--%>
                         <table width="242" height="256" border="1" cellpadding="1"
                             cellspacing="1">
                             <caption>
                                 List&ltList&ltString&gt&gt遍历如下:
                             </caption>
                             <s:iterator value="#request.listList" status="st">
                                 <tr>
                                     <s:iterator value="#request.listList.get(#st.index)">
                                         <td valign="middle" align="center">
                                             <s:property />
                                         </td>
                                     </s:iterator>
                                 </tr>
                             </s:iterator>
                         </table>

    注:遍历List<List<String>>运行结果参考上图1(右上)

    3、遍历UserEntity

    (1)后台TestAction.java 部分代码: 


     // TODO 给UserEntity赋值
      if (userEntity==null) {
          userEntity=new UserEntity("诸葛亮","男",37);
      }

    (2)前台jsp+s标签部分源代码:

    <%--UserEntity遍历如下:--%>
    <table width="242" height="256" border="1" cellpadding="1"
    cellspacing="1">
    <caption>
    UserEntity遍历如下:
    </caption>
    <tr>
    <%--<td><s:property value="#变量名.属性名" /></td>--%>
    <td>
    <s:property value="userEntity.name" />
    </td>
    <td>
    <s:property value="userEntity.sex" />
    </td>
    <td>
    <s:property value="userEntity.age" />
    </td>
    </tr>
    </table>

    注:遍历UserEntity运行结果参考上图1(左下)

    4、遍历List<UserEntity>

    (1)后台TestAction.java 部分代码: 

      // TODO 给List<UserEntity>赋值
          if (users==null) {
              users=new ArrayList<UserEntity> ();
              UserEntity user=new UserEntity("张飞","男",18);
              users.add(user);
              user=new UserEntity("李斯","男",19);
             users.add(user);
              user=new UserEntity("王武","男",20);
              users.add(user);
              user=new UserEntity("小乔","女",21);
             users.add(user);
         }
    View Code

    (2)前台jsp+s标签部分源代码:

      <%-- List<UserEntity>遍历如下:--%>
                          <table width="242" height="256" border="1" cellpadding="1"
                             cellspacing="1">
                              <caption>
                                  List&ltUserEntity&gt遍历如下:
                              </caption>
                              <tr>
                                 <th>
                                      姓名
                                 </th>
                                 <th>
                                     性别
                                 </th>
                                 <th>
                                     年龄
                                 </th>
                             </tr>
                             <s:iterator id="u" value="users">
                                 <%--
             <s:iterator  id="別名"  value="要遍历的集合">
             users:对应后台Action类的List<UserEntity> users;
             --%>
                                 <tr>
                                     <%--<td><s:property value="#別名.实体类属性名" /></td>--%>
                                     <td>
                                         <s:property value="#u.name" />
                                     </td>
                                     <td>
                                         <s:property value="#u.sex" />
                                     </td>
                                     <td>
                                         <s:property value="#u.age" />
                                     </td>
                                 </tr>
                             </s:iterator>
                         </table>

    注:遍历List<UserEntity>运行结果参考上图1(右下)

    5、用法比较

    (1)比较List<String>和UserEntity

      它们遍历显示效果类似,但是细心的朋友会发现,它们主要有以下区别:
      区别1:List<String>的遍历需要iterator迭代器如<s:iterator id="别名" value="后台List变量名">,且不需要value属性直接用<s:property />获取列表元素;
      区别2:UserEntity刚相反,不需要iterator迭代器,但需要value属性<s:property value="#变量名.属性名" />来获取列表元素。

    (2)比较List<List<String>>和List<UserEntity>

      它们遍历显示效果也类似,它们也有以下区别:
      区别1:List<List<String>>由于列表没有属性需要借助迭代器的属性status="st",
      如:

    <s:iterator value="#request.listList" status="st">
      <tr>
        <s:iterator value="#request.listList.get(#st.index)">
            <td valign="middle" align="center">
              <s:property />
            </td>
    </s:iterator>
    </tr>
    </s:iterator>

      区别2:List<UserEntity>则简单多,借用迭代器iterator的id、value属性,再用<s:property value="#別名.实体类属性名" />获取

      如:

    <s:iterator id="u" value="users">
       <tr>
           <td>
             <s:property value="#u.name" />
           </td>
           <td>
             <s:property value="#u.sex" />
           </td>
           <td>
             <s:property value="#u.age" />
           </td>
       </tr>
    </s:iterator>

      综合以上的对比分析:遍历方法各有长短,若不是多表联接查询、显示表格的列数已经固定,一般用实体类(UserEntity)迭代的方式。相反,显示的数据表格行和列不确定,此时用实体类(UserEntity)迭代的方式很难实现,只能用List<String>或List<List<String>>实现了。

  • 相关阅读:
    mysql新建用户的方法
    工具网站
    如何做好站内锚文本?
    js 创建对象与继承
    js tips
    js作用域链 js没有块级作用域
    css
    instanceof
    问题
    传递,引用副本传递
  • 原文地址:https://www.cnblogs.com/changzheng/p/3930396.html
Copyright © 2011-2022 走看看