subList是在日常中常用的方法,可以有一些细节可能一直不从注意到。
subList返回的是当前list的一个视图,如果起始位置相同则返回一个空列表。返回的子列表仅仅是原有的list的视图,对sublist的修改可以直接影响到原list。但是对原有List进行结构化进行修改后则subList则失效,再对其进行操作时会抛出一个java.util.ConcurrentModificationException异常
/** * * @author zhangwei_david * @version $Id: ListDemo.java, v 0.1 2014年8月17日 下午4:05:42 zhangwei_david Exp $ */ public class ListDemo { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); //sub=[A,B] List<String> sub = list.subList(0, 2); //清除A,B sub.clear(); System.out.println(list); //增加 D sub.add("D"); System.out.println(list); list.add("E"); try { System.out.println(sub); } catch (ConcurrentModificationException cme) { System.out.println("发生了预期异常"); } }
结果是:
[C] [D, C] 发生了预期异常
相关推荐
### Vue使用注意事项详解 在进行Vue开发过程中,开发者往往会遇到各种各样的问题。这些问题有的源自于框架本身的限制,有的则是由于使用不当所导致。本文基于实际项目经验,并结合网络资源整理,旨在帮助开发者规避...
subList iterator forEach sort removeIf Vector different with ArrayList 2018/3/26 ChangeLogs LinkedList ctor-2 addFirst addLast addAll add indexOf lastIndexOf peek 获取第一个元素,是 null 就返回 null ...
4. **注意事项**:截取的子列表与原列表共享相同的底层数组或链表,因此修改子列表会影响原始列表。例如,如果在子列表中添加元素,原列表的大小也会增加。 5. **遍历截取后的List**:可以使用增强for循环或迭代器...
subList 场景中的注意事项 **强制规定**:在 `subList` 场景中,需要注意对原始集合元素的增删操作,这些操作都可能导致子列表的遍历、增删产生 `ConcurrentModificationException` 异常。 **说明**:在使用 `...
`subList`的使用注意事项 `List.subList()`方法用于获取列表的一个视图。需要注意的是,这个视图与原始列表是关联的,任何对视图的修改都会影响到原始列表,反之亦然。因此,在处理`subList`时需要格外小心,尤其...
手册中提出了多个编程实践和注意事项,包括避免空指针异常、优化HashMap初始化、线程池创建、ArrayList操作、字符串拼接、日志使用、日期格式化、变量命名以及继承策略等方面的问题。 1. **三目运算符的空指针问题*...
三、优化与注意事项 1. 计算总页数:当数据量较大时,直接计算总页数可能会导致性能问题。可以考虑只保存最近几页的页码,或者在用户滚动到底部时动态加载更多数据(懒加载)。 2. 分页缓存:对于频繁访问且不经常...
四、优化与注意事项 1. 数据库层面优化:在数据库查询时,可以使用LIMIT和OFFSET关键字(MySQL)或者ROW_NUMBER()函数(SQL Server)进行分页查询,避免加载全部数据。 2. 缓存:对于不常变动的数据,可以考虑使用...
Java开发手册是Java开发者必备的指南之一,本手册中提到了许多Java开发中的最佳实践和注意事项。下面我们就从给定的文件中总结出一些重要的知识点: 1.为什么禁止使用Apache Beanutils进行属性的copy? 在Java开发...
阿里巴巴规范建议在每个类、接口、方法上方添加简明扼要的注释,说明其功能、用途及注意事项。此外,对于复杂的逻辑块,应在关键部分添加行内注释,解释代码意图。 三、代码结构与组织 规范鼓励使用面向对象的设计...
- **注意事项**:`subList`返回的子列表与原始列表共享底层数组,对子列表的操作将直接影响原始列表。这种设计可以提高效率,但也容易引发意外的副作用。 - **应用指南**:在使用`subList`时,应明确理解其行为,并...
**使用场景和注意事项:** - 当需要保持元素插入顺序,并且可能需要根据索引访问或操作元素时,使用`List`接口及其实现类。 - `List`接口中的方法`add`, `remove`, `set`等操作可能会影响迭代器,因此在遍历列表时应...
List 转换注意事项 在处理 List 时,转换操作是常见的需求,如从数组转换为 List。如前所述,直接使用 `Arrays#asList` 创建的 List 是不支持修改操作的。因此,如果需要一个可变的 List,应使用 `new ArrayList...
**注意事项**: - 当重写`hashCode()`方法时,应该尽量确保每个元素的哈希值具有较高的唯一性。通常情况下,可以通过组合元素的各个属性的哈希值来实现这一点。 - 示例代码展示如何为自定义类型重写`hashCode()`方法...
7. **迭代器注意事项**: 当使用迭代器时,推荐只使用迭代器提供的方法(如`next`、`hasNext`、`remove`等)来操作集合,以避免并发修改异常。如果需要执行更复杂的操作,如添加元素或修改元素,应使用`...
6. **注意事项** - 数据库查询时,应使用预编译的SQL语句(PreparedStatement),防止SQL注入攻击。 - 分页效率优化:避免一次性加载所有数据,而是根据当前页和每页条数进行动态查询。 - 需要处理边界情况,如用户...
注意事项** 在使用Submax时,务必遵守法律法规,不得用于非法入侵或未经授权的活动。此外,由于网络延迟和服务器限制,枚举过程中可能需要一定时间,并可能产生大量网络流量,使用时需留意。 综上所述,Submax是...
根据给定文件的信息来看,虽然标题提及的是“Python常用数据结构的使用方法”,但在描述部分却提到了“Matlab技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题”,这显然存在一定的混淆。...