Collection和Collections区别的理解

1.Collection:

是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作。

Collection接口时Set接口和List接口的父接口

2.Collections

Collections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作。

最根本的是Collections是一个类,Collections 是一个包装类,Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素, 而另一些则不允许,一些 collection 是有序的,而另一些则是无序的。

稍微举个例子:

public static void main(String args[]) {   
       //注意List是实现Collection接口的   
       List list = new ArrayList();   
       double array[] = { 112, 111, 23, 456, 231 };   
       for (int i = 0; i < array.length; i++) {   
           list.add(new Double(array[i]));   
       }   
       Collections.sort(list);   //把list按从小到大排序
       for (int i = 0; i < array.length; i++) {   
           System.out.println(list.get(i));   
       }   
       // 结果:23.0 111.0 112.0 231.0 456.0   
 }   

然后还有混排(Shuffling)、反转(Reverse)、替换所有的元素(fill)、拷贝(copy)、返回Collections中最小元素(min)、返回Collections中最大元素(max)、返回指定源列表中最后一次出现指定目标列表的起始位置(lastIndexOfSubList)、返回指定源列表中第一次出现指定目标列表的起始位置(IndexOfSubList)、根据指定的距离循环移动指定列表中的元素(Rotate)

### MyBatis 中 `collection` 标签的使用场景 #### 1. 基本概念 在 MyBatis 中,`collection` 标签主要用于处理一对多的关系。当一个实体对象包含多个其他实体对象时,可以使用此标签来映射这些复杂的数据结构[^2]。 #### 2. XML 文件中的实现方式 对于给定的方法 `public List<User> selectByIds(int[] userIds)`,XML 映射文件应如下所示: ```xml <select id="selectByIds" parameterType="int[]" resultType="User"> SELECT * FROM t_user WHERE id IN <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> </select> ``` 这里展示了如何通过 `<foreach>` 来遍历传入的数组参数并构建 SQL 查询条件[^1]。 #### 3. 关联查询 vs 嵌套 Select 查询 存在两种主要的方式来利用 `collection` 进行数据检索: - **关联查询**:仅需一条 SQL 即可完成整个树状结构的数据加载; - **嵌套 Select 查询**:会针对每条记录发起额外的数据库请求以获取其子项列表;虽然这种方式性能较低,但它提高了代码复用度[^3]。 #### 4. 类型配置选项 为了更精确地控制返回的结果集,在定义 resultMap 的时候还可以设置两个重要的属性——`javaType` `ofType`。前者指定了 POJO 属性的具体类型(如 ArrayList),后者则明确了该集合内元素的实际类型(比如 User 对象)。这有助于确保最终得到的对象图与预期一致。 #### 5. 实际案例分析 考虑这样一个例子,其中涉及到三个层次的数据模型:“大类”—“子类”—“技能”。此时可以通过层层嵌套的方式应用 `collection` 标签,从而一次性读取完整的层级化信息[^4]: ```xml <resultMap type="ClassifySkill" id="classifySkillResult"> <!-- ... --> <collection property="assembleSkillLists" ofType="AssembleSkill"> <id column="assemble_skill_id" property="assembleSkillId"/> <result column="assemble_skill_name" property="assembleSkillName"/> <collection property="nameSkillLists" ofType="NameSkill"> <id column="name_skill_id" property="nameSkillId"/> <result column="name_skill_name" property="nameSkillName"/> </collection> </collection> </resultMap> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值