有这样的需求,两个list:
1.list包含属性X,值为1、2、3、4、5、6
2.list2包含属性Y,值为a、b、C、D、E、F
3.两个list的size相同
4.输出成(原来的大小),值为合并后的,即:1a、2b、3C、4D、5E、6F
方法是:通过struts的iterator和set、property标签,如下所示:
<s:iterator value="list1" status="status" step="1">
/*以下是取得list2的第几个属性对象,并设置到request的范围共享*/
<s:set name="list2" value="#attr.l2[#attr.status.getIndex()]" scope="request"/>
<s:property value="#request.list1.x"/>
<s:property value="#request.list2.y"/>
</s:iterator>
下面是使用foreach实现的两个输出:
<c:forEach items="${list1}" var="item" varStatus="status">
<c:out value="${item.X}"></c:out>
<c:out value="${list2[status.index].Y}"></c:out>
</c:forEach>
另附:
jstl中的varStatus
和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
特性 Getter 描述
current getCurrent() 当前这次迭代的(集合中的)项
index getIndex() 当前这次迭代从 0 开始的迭代索引
count getCount() 当前这次迭代从 1 开始的迭代计数
first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志
last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志
begin getBegin() begin 属性值
end getEnd() end 属性值
step getStep() step 属性值
<c:foreach var="showBspSubTop" varstatus="i" begin="1" step="1" items="${ showBspSubTops }"></c:foreach>
分享到:
相关推荐
在给定的文件列表中,`List.cpp`可能包含了上述两种遍历`std::list`的实现,而其他文件如`.h`、`.rc`等可能是项目的头文件、资源文件或工程配置文件。分析这些文件可以帮助我们理解`std::list`的实际使用场景和代码...
10. **循环标签:s:foreach** 类似于Java的for-each循环,用于遍历数组或集合。`<s:foreach items="colors" var="color">${color}</s:foreach>`,items属性指定遍历的对象,var属性定义循环变量。 通过理解并熟练...
- `<s:iterator>`:遍历集合对象,如List或Map,进行循环输出。 2. Commons Tags(c标签): c标签来自Apache Commons JSTL库,它提供了一组通用的JSP标签,可以处理数组、集合、字符串等数据操作。例如: - `<c...
例如,通过`s:form`和`s:submit`创建的表单可以自动处理数据提交,`s:if`和`s:foreach`可以方便地实现条件判断和循环输出。 总结,Struts2标签是Struts2框架中的重要组成部分,它通过提供丰富的标签库,简化了视图...
### 第二种:增强型for循环(foreach) ```java for (A a : list) { // ... } ``` 增强型for循环是Java 5引入的新特性,它简化了遍历集合的操作。这种方式实际上是内部使用了迭代器,所以它同样存在性能问题,...
jstl forEach 标签是 JavaServer Pages Standard Tag Library (JSTL) 中的一个标签,用于循环控制,可以将集合中的成员循序浏览一遍。该标签的运作方式为当条件符合时,就会持续重复执行的本体内容。 语法 --------...
在Java中,遍历List并移动元素通常有两种主要方式:迭代器(Iterator)和增强for循环(foreach)。以下是这两种方法的详细说明: 1. 迭代器(Iterator): 迭代器是Java集合框架提供的一种统一的遍历方式,它可以...
除了使用`get()`方法之外,我们还可以使用迭代器(`Iterator`)或增强型`for`循环(也称为“foreach”循环)来遍历`List`中的元素。这两种方法都避免了直接使用索引,这可以减少潜在的数组越界错误。 ##### 使用`...
这个接口提供了两个主要的方法: 1. `boolean hasNext()`: 检查迭代器是否还有更多的元素。如果集合中还有未访问的元素,此方法将返回`true`;否则,返回`false`。 2. `E next()`: 返回迭代器的下一个元素。如果...
首先,我们需要导入`java.util.List`和`java.util.ArrayList`(或`java.util.LinkedList`)这两个包。`ArrayList`和`LinkedList`都是`List`接口的实现类,它们各自有不同的特性和性能特点。`ArrayList`是基于动态...
在Java中,迭代器通过`Iterator`接口来实现,该接口提供了两个主要方法: 1. `public E next()`: 返回迭代中的下一个元素。每次调用`next()`方法,迭代器会移动到下一个元素,并返回当前元素的引用。 2. `public ...
5. **Stream API**:Java 8引入的`Stream API`提供了一种新的遍历方式,支持链式操作,可以进行过滤、映射、聚合等操作,如`list.stream().forEach(System.out::println)`或`map.entrySet().stream().forEach(System...
首先,迭代器模式包含两个主要角色:聚合对象(Aggregate)和迭代器(Iterator)。聚合对象持有元素的集合,并提供创建迭代器的方法。迭代器则负责遍历聚合对象中的元素,它有一个或多个方法用于移动到下一个元素,...
遍历Set通常也使用迭代器或增强型for循环: - **方法一:迭代器** ```java Set<String> set = new HashSet(); set.add("element1"); set.add("element2"); Iterator<String> iterator = set.iterator(); ...
遍历LinkedList可以使用Iterator,或者同样适用for-each循环,但由于其内部结构,使用Iterator在某些情况下可能更有效率: ```java LinkedList<String> linkedList = new LinkedList(); linkedList.addFirst("A"); ...
但是却让其被继承产生了两个接口,就是 Set 和 List。Set 中不能包含重复的元素。List 是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。Map 是 Java.util 包中的另一个接口,它和 Collection 接口...
首先,我们可以使用List接口实现了Iterable接口,获取一个Iterator对象,然后使用while循环来遍历List中的所有元素。同样,我们可以使用Map的entrySet()方法来获取一个Set对象,然后使用Iterator来遍历这个Set对象。...
2. 对于`Student`类,我们需要处理两个`ArrayList<Student>`——`list1`和`list2`。我们将执行以下操作: - 合并`list1`和`list2`,同时移除重复的`Student`对象。这可以通过调用`addAll`并将结果存储在一个新的`...