Themeleaf 循环遍历list

本文介绍如何使用Thymeleaf模板引擎在前端页面上渲染Java后端传递过来的书籍列表,并展示了两种不同的渲染方式:直接指定列表元素和通过迭代遍历列表。
List list = new ArrayList<>();
list.add("三国演义");
list.add("红楼梦");
list.add("西游记");
list.add("水浒传");
list.add("京华烟云");

ModelAndView mav = new ModelAndView();
mav.addObject("list",list);
mav.setViewName("xxxx");
return mav;

前端xxxx页面,引入Thyemeleaf 模版
<p>法1</p>
<table>
    <thead>
    <tr>
        <th><span th:text="${list[1]}"></span></th>
        <th><span th:text="${list[2]}"></span></th>
        <th><span th:text="${list[3]}"></span></th>
        <th><span th:text="${list[4]}"></span></th>
        <th><span th:text="${list[0]}"></span></th>
    </tr>
    </thead>
</table>
<p>获取list下标</p>
<table>
    <thead>
    <tr th:each="item,itemStat:${list}" >
        <th><span th:text="${itemStat.count}"></span></th>
    </tr>
    </thead>
</table>
//最好 设置List类型 为map,用key 访问.
<think>我们正在回答用户的问题:Java中循环遍历List的方法。根据用户提供的引用,我们可以总结出几种遍历方式,并给出示例代码。 引用[1]提到三种方式:for循环、增强for循环(foreach)、迭代器(Iterator)。 引用[2]展示了使用for循环(索引遍历)的示例。 引用[3]提到了Java 8引入的forEach方法和Stream API。 引用[4]提到了在使用不同List实现时遍历删除的注意事项。 因此,我们可以将遍历方式分为以下四类: 1. 普通for循环(使用索引) 2. 增强for循环(foreach) 3. 使用Iterator迭代器 4. Java 8的forEach方法和Stream API 另外,我们需要注意在遍历过程中删除元素的情况,根据List的实现不同(如ArrayList和CopyOnWriteArrayList)需要选择不同的遍历方式以避免并发修改异常。 下面按照上述分类给出详细说明和代码示例。 </think>### Java中循环遍历List的四种方法 在Java中遍历List集合主要有以下四种方式,每种方式适用于不同场景: #### 1. **普通for循环(索引遍历)** 通过索引值访问元素,适用于需要获取元素位置的场景: ```java List<String> list = Arrays.asList("A", "B", "C"); for (int i = 0; i < list.size(); i++) { System.out.println("索引" + i + "的值: " + list.get(i)); } // 输出: // 索引0的值: A // 索引1的值: B // 索引2的值: C ``` ▸ 优点:可直接获取索引位置 ▸ 缺点:代码较冗长[^2] #### 2. **增强for循环(foreach)** 语法简洁的迭代方式,适用于只读操作: ```java for (String item : list) { System.out.println(item); } // 输出: // A // B // C ``` ▸ 优点:代码简洁易读 ▸ 注意:遍历中修改列表可能引发`ConcurrentModificationException`[^4] #### 3. **Iterator迭代器** 安全删除元素的遍历方式: ```java Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if ("B".equals(item)) { iterator.remove(); // 安全删除元素 } } System.out.println(list); // 输出: [A, C] ``` ▸ 优点:支持遍历中安全的增删操作 ▸ 场景:动态修改集合的首选方式[^4] #### 4. **Java 8+ forEach()方法** 函数式编程风格,支持Lambda表达式: ```java list.forEach(item -> System.out.println(item)); // 简写形式: list.forEach(System.out::println); ``` ▸ 优点:代码最简洁,支持链式操作 ▸ 扩展:可与Stream API结合实现过滤/映射等操作[^3]: ```java list.stream() .filter(s -> !s.equals("B")) .forEach(System.out::println); // 输出: A C ``` ### 遍历方式选择指南 | **方式** | **适用场景** | **线程安全** | **修改支持** | |----------------|---------------------------------------|-------------|---------------------| | 普通for循环 | 需要索引位置 | ❌ | 直接修改list | | 增强for循环 | 简单只读遍历 | ❌ | 禁止修改(会抛异常) | | Iterator | 需要动态增删元素 | ✅ | 通过iterator.remove() | | forEach() | 函数式编程/链式操作 | ❌ | 禁止修改 | ### 遍历删除注意事项 - **ArrayList**:必须使用`Iterator.remove()`避免`ConcurrentModificationException`[^4] - **CopyOnWriteArrayList**:可直接使用增强for循环删除(线程安全实现) > 在遍历过程中修改集合时,优先选择`Iterator`方式以保证代码健壮性。对于只读遍历,Java 8的`forEach`提供最简洁的语法[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值