根据指定的实体类中的列名,将List转成Map

本文介绍如何高效地将List中的对象依据指定属性转换为Map,避免逐一遍历。例如,将List<Book>转换为Map<String, Book>,键值对形式如'id-book'或'price-book'。提供了一个示例方法,演示如何实现从List<book>到Map<id, book>的转换,并讨论了基于实体类列名的排序方法。" 125011367,12670975,Redis深度解析:数据结构、持久化、并发控制与实战技巧,"['Redis', '数据结构', '哈希算法', '链表', '开发语言']
摘要由CSDN通过智能技术生成

有时候我们需要从List中查询某一个指定的变量所对应的对象,但是在list中逐个遍历对比不是一个明智的选择。

本篇博客是根据指定的对象中的变量,来将list转换成map,然后直接从map中get即可。

比如,我的list中是book对象。

public class Book {
    
    private Long id;//书本编号
    private String name;//书本名称
    private double price;//书本价格
    private String author;//作者
    private Integer weight;//权重
    
    public Book(Long Id,String Name,double Price,String Author,Integer Weight) {
        this.id=Id;
        this.name=Name;
        this.price=Price;
        this.author=Author;
        this.weight=Weight;
}
}

那么我需要获取指定的id的书本,或者获取指定的价格的书本等。

那么就可以转成map对象,map中的键值对就是  id-book、或者是price-book。

根据指定的键值对转换,方法如下:

第一个是书本类:book:

package userSort;


public class Book {
    
    private Long id;//书本编号
    private String name;//书本名称
    private double price;//书本价格
    private String author;//作者
    private Integer weight;//权重
    
    public Book(Long Id,String Name,double Price,String Author,Integer Weight) {
        this.id=Id;
        this.name=Name;
        this.price=Price;
        this.author=Author;
        this.weight=Weight;
}
    
    
    
    public 
您可以封装一个resultMap来实现对EquipmentVo实体类的映射,具体实现可以参考以下代码: ```xml <resultMap id="equipmentVoMap" type="EquipmentVo"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="model" column="model"/> <result property="regionId" column="region_id"/> <!-- 一对多关系映射 --> <collection property="equipmentDataVoList" ofType="EquipmentDataVo"> <result property="id" column="e_id"/> <result property="name" column="e_name"/> <result property="value" column="e_value"/> <result property="equipmentId" column="equipment_id"/> </collection> <!-- 动态的map映射 --> <collection property="maps" ofType="java.util.HashMap" resultMap="dynamicMap"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="model" property="model"/> <result column="region_id" property="regionId"/> <result column="e_id" property="equipmentId"/> <result column="e_name" property="equipmentName"/> <result column="e_value" property="equipmentValue"/> </collection> </resultMap> <resultMap id="dynamicMap" type="java.util.HashMap"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="model" property="model"/> <result column="region_id" property="regionId"/> <result column="e_id" property="equipmentId"/> <result column="e_name" property="equipmentName"/> <result column="e_value" property="equipmentValue"/> </resultMap> ``` 其,equipmentDataVoList是对应的一对多关系,maps是动态的map映射,ofType属性指定集合元素的类型,resultMap属性指定使用的resultMap。动态的map映射需要额外定义一个resultMap,其的property对应的是map的键,column对应的是数据库表列名。在SQL语句,需要使用AS关键字来指定map的键名,例如: ```sql SELECT e.*, d.id AS e_id, d.name AS e_name, d.value AS e_value FROM equipment e LEFT JOIN equipment_data d ON e.id = d.equipment_id ``` 注意,当使用动态的map映射时,需要将实体类对应的属性置为null,否则会出现重复映射的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值