BeanUtils和BeanMap对象相互转换 对比

本文对比了BeanUtils和BeanMap在大量数据下将Bean对象转换为List和List转换回Bean对象的效率。测试结果显示,对于较小规模的数据,BeanUtils在转换过程中更具优势;然而,随着数据量的增加,BeanMap的性能表现更好。在实际应用中,根据数据量选择合适的转换方式,并考虑代码简洁性,通常BeanUtils是更常用的选择。
摘要由CSDN通过智能技术生成

BeanUtils和BeanMap对象相互转换 对比

 

 可以使用BeanMap,进行Bean对象和Map相互转换,也可以用BeanUtil的方式进行Bean对象和Map相互转换,两种之间的效率如何呢? 该如何选择?

 

 

1,对比Bean对象转换为List的情况

测试:

private final static int SIZE = 500000;
private static List<Map<String, Object>> shapeLists = ShapeListMapFactory.create(SIZE);
private static List<Shape> shapeBeanList = ShapeFactory.create(SIZE);

public static void main(String[] args) {
    System.out.println("======== compare BeanMap and JOSN change beans to list ===========");
    testBeansToList();
    changeBeansToListMap();
}

public static void testBeansToList(){
    System.out.println("========== BeanMapUtils change beans to listMap ============");
    long startTime = System.currentTimeMillis();
    BeanMapUtils.changeBeansToList(shapeBeanList);
    long endTime = System.currentTimeMillis();
    System.out.println("BeanMapUtils.listsToBeans转换耗费的时间:" + (endTime - startTime) + "ms");
}

public static void changeBeansToListMap() {
    List<Map> mapList=new ArrayList<>();
    System.out.println("========== JSON change beans to list ============");
    long startTime = System.currentTimeMillis();
    for(Object shape: shapeBeanList){
        Map map = JSON.parseObject(JSONObject.toJSONString(shape), Map.class);
        mapList.add(map);
    }
    long endTime = System.currentTimeMillis();
    System.out.println("JSON BeanToListMap 转换耗费的时间:" + (endTime - startTime) + "ms");
}

 

将size改为: 500000

 

结果1:

======== compare BeanMap and BeanUtil change beans to list ===========
========== BeanMapUtils change beans to listMap ============
BeanMapUtils.beansToMaps 转换耗费的时间:938ms
========== BeanUtils change beans to listMap ============
BeanUtils.listsToBeans 转换耗费的时间:593ms

 

结果2:

======== compare BeanMap and BeanUtil change beans to list ===========
========== BeanMapUtils change beans to listMap ============
BeanMapUtils.beansToMaps 转换耗费的时间:989ms
========== BeanUtils change beans to listMap ============
BeanUtils.listsToBeans 转换耗费的时间:516ms

 

将size改为: 1000000

 

结果3:

======== compare BeanMap and BeanUtil change beans to list ===========
========== BeanMapUtils change beans to listMap ============
BeanMapUtils.beansToMaps 转换耗费的时间:908ms
========== BeanUtils change beans to listMap ============
BeanUtils.listsToBeans 转换耗费的时间:1040ms

 

结果4:

======== compare BeanMap and BeanUtil change beans to list ===========
========== BeanMapUtils change beans to listMap ============
BeanMapUtils.beansToMaps 转换耗费的时间:973ms
========== BeanUtils change beans to listMap ============
BeanUtils.listsToBeans 转换耗费的时间:1006ms

 

将size改为: 2000000

 

结果5:

======== compare BeanMap and BeanUtil change beans to list ===========
========== BeanMapUtils change beans to listMap ============
BeanMapUtils.beansToMaps 转换耗费的时间:2129ms
========== BeanUtils change beans to listMap ============
BeanUtils.listsToBeans 转换耗费的时间:2683ms

 

结果6:

======== compare BeanMap and BeanUtil change beans to list ===========
========== BeanMapUtils change beans to listMap ============
BeanMapUtils.beansToMaps 转换耗费的时间:2222ms
========== BeanUtils change beans to listMap ============
BeanUtils.listsToBeans 转换耗费的时间:3051ms

 

分析:

  有结果可以看出,小于1百万的时候,BeanUtils处理把beans转为list的时候,效率会更好,之后的话,BeanMap处理性能会更好。

 

2,对比 将List转换为Bean对象

 

测试:

private final static int SIZE = 500000;
private static List<Map<String, Object>> shapeLists = ShapeListMapFactory.create(SIZE);
private static List<Shape> shapeBeanList = ShapeFactory.create(SIZE);

public static void main(String[] args) {
    System.out.println("======== compare BeanMap and BeanUtil change list to beans ===========");
    testBeanMapListToBeans();
    testBeanUtilsListMapToBeans();
}

public static void testBeanMapListToBeans(){
    System.out.println("======== BeanMapUtils change listMap to beans ========");
    long startTime = System.currentTimeMillis();
    BeanMapUtils.changeListToBeans(shapeLists, Shape.class);
    long endTime = System.currentTimeMillis();
    System.out.println("BeanMapUtils.mapsToBeans 转换耗费的时间:" + (endTime - startTime) + "ms");
}

public static void testBeanUtilsListMapToBeans() {
    System.out.println("========== BeanUtils change list to Bean ============");
    long startTime = System.currentTimeMillis();
    BeanUtils.listsToBeans(shapeLists, Shape.class);
    long endTime = System.currentTimeMillis();
    System.out.println("BeanUtils listsToBeans 转换耗费的时间:" + (endTime - startTime) + "ms");
}

 

size: 500000

结果1:

======== compare BeanMap and BeanUtil change list to beans ===========
======== BeanMapUtils change listMap to beans ========
BeanMapUtils.mapsToBeans 转换耗费的时间:1114ms
========== BeanUtils change list to Bean ============
BeanUtils listsToBeans 转换耗费的时间:530ms

 

结果2:

======== compare BeanMap and BeanUtil change list to beans ===========
======== BeanMapUtils change listMap to beans ========
BeanMapUtils.mapsToBeans 转换耗费的时间:1078ms
========== BeanUtils change list to Bean ============
BeanUtils listsToBeans 转换耗费的时间:511ms

size: 1000000

结果3:

======== compare BeanMap and BeanUtil change list to beans ===========
======== BeanMapUtils change listMap to beans ========
BeanMapUtils.mapsToBeans 转换耗费的时间:954ms
========== BeanUtils change list to Bean ============
BeanUtils listsToBeans 转换耗费的时间:868ms

结果4:

======= compare BeanMap and BeanUtil change list to beans ===========
======== BeanMapUtils change listMap to beans ========
BeanMapUtils.mapsToBeans 转换耗费的时间:958ms
========== BeanUtils change list to Bean ============
BeanUtils listsToBeans 转换耗费的时间:874ms

size: 2000000

结果5:

======== compare BeanMap and BeanUtil change list to beans ===========
======== BeanMapUtils change listMap to beans ========
BeanMapUtils.mapsToBeans 转换耗费的时间:1708ms
========== BeanUtils change list to Bean ============
BeanUtils listsToBeans 转换耗费的时间:2245ms

 

结果6:

======== compare BeanMap and BeanUtil change list to beans ===========
======== BeanMapUtils change listMap to beans ========
BeanMapUtils.mapsToBeans 转换耗费的时间:1862ms
========== BeanUtils change list to Bean ============
BeanUtils listsToBeans 转换耗费的时间:2011ms

 

分析:

  有结果可以看出,跟把Bean对象转为List的情况相似。小数量的BeanUtil更有优势。

 

总结

  比较完两者的效率,在数据量很大的情况下,进行Bean转为为List的情况下,BeanMap的方式比较合适。不过实际中一般也不会进行那样大量的转换。 平时使用BeanUtil就好了,引用的代码也比BeanMap更简洁,而且还有更多好用的功能

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天狼1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值