日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache-commons之BeanUtils、ConvertUtils、PropertyUtils、CollectionUtils的基本使用

發布時間:2024/8/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache-commons之BeanUtils、ConvertUtils、PropertyUtils、CollectionUtils的基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BeanUtils工具包是由Apache公司所開發,主要是方便程序員對Bean類能夠進行簡便的操作。


BeanUtils一共分4個包:

????? org.apache.commons.beanutils

????? org.apache.commons.beanutils.converters

????? org.apache.commons.beanutils.locale

????? org.apache.commons.beanutils.locale.converters


其中需要我們特別關注的是這個org.apache.commons.beanutils包,其他包都是起輔助作用的。其中上面兩個沒有針對本地化的任何處理,執行效率高。下面兩個對本地化有要求。


BeanUtils

主要提供了對于JavaBean進行各種操作,比如對象,屬性復制等等。


BeanUtils設置屬性值的時候,如果屬性是基本數據類型,那么BeanUtils會自動幫我們進行數據類型的轉換,并且BeanUtils設置屬性的時候也是依賴于底層的getter和setter方法。如果設置的屬性值是其他的引用數據類型,此時必須要注冊一個類型轉換器才能實現自動的轉換(參考下面的ConvertUtils)


常用方法:

cloneBean(Object?bean)

對象的克隆

copyProperties(Object?dest,?Object?orig)

對象的拷貝

copyProperty(Object?bean,?String?name,?Object?value)

拷貝指定的屬性值到指定的bean

setProperty(Object?bean,?String?name,?Object?value)

設置指定屬性的值

populate(Object?bean,?Map<String,? extends?Object>?properties)

map數據拷貝到javabean中(mapkey要與javabean的屬性名稱一致)


注:copyPropertysetProperty,日常使用時推薦copyProperty。如果我們需要自定義實現populate()方法,那么我們可以override setProperty()方法.

示例:

// JavaBean public class Animal {private String name;private int age;private String color;private String sex;public Animal() {}getXxx和setXxx省略……}
/*** BeanUtils*/ @Test public void test1() throws Exception {Map<String, Object> map = new HashMap<String, Object>();map.put("name", "tuantuan");map.put("age", 3);map.put("color", "black");map.put("sex", "female");// 將map數據拷貝到javabean中Animal a1 = new Animal();BeanUtils.populate(a1, map);System.out.println(a1); // Animal [name=tuantuan, age=3, color=black, sex=female]// 對象的拷貝Animal a2 = new Animal();BeanUtils.copyProperties(a2, a1);System.out.println(a2);// Animal [name=tuantuan, age=3, color=black, sex=female]// 拷貝指定的屬性Animal a3 = new Animal();BeanUtils.copyProperty(a3, "name", "yuanyuan");System.out.println(a3); // Animal [name=yuanyuan, age=0, color=null, sex=null]// 設置指定的屬性BeanUtils.setProperty(a3, "sex", "male");System.out.println(a3); // Animal [name=yuanyuan, age=0, color=null, sex=male]// 克隆對象Object object = BeanUtils.cloneBean(a3);System.out.println(object); // Animal [name=yuanyuan, age=0, color=null, sex=male] }


ConvertUtils

這個工具類的職能是在字符串和指定類型的實例之間進行轉換。?實際上,BeanUtils是依賴ConvertUtils來完成類型轉換,但是有時候我們可能需要自定義轉換器來完成特殊需求的類型轉換;

主要方法:

convert(Object?value,?Class<?>?targetType)

將給定的value轉換成指定的Class類型

// 將整型轉換成字符串 Object object = ConvertUtils.convert(123, String.class); String typeName = object.getClass().getTypeName(); System.out.println(typeName);// 將日期轉換成字符串 Object object2 = ConvertUtils.convert(new Date(), String.class); String typeName2 = object2.getClass().getTypeName(); System.out.println(typeName2);// 將字符串轉換成Double Object object3 = ConvertUtils.convert("123", Double.class); String typeName3 = object3.getClass().getTypeName(); System.out.println(typeName3);


自定義類型轉換:

自定義轉換器,實現Converter接口,重寫convert方法

class MyConverter implements Converter {private static SimpleDateFormat format;public MyConverter(String pattern) {format = new SimpleDateFormat(pattern);}@Overridepublic Object convert(Class type, Object value) {if (value == null) {return null;}if (value instanceof String) {String tmp = (String) value;if (tmp.trim().length() == 0) {return null;} else {try {return format.parse(tmp);} catch (ParseException e) {e.printStackTrace();}}} else {throw new ConversionException("not String");}return value;} }

使用:

MyConverter converter = new MyConverter("yyyy-MM-dd HH:mm:ss"); // 注冊該轉換器 ConvertUtils.register(converter, Date.class); Object object3 = ConvertUtils.convert("2017-11-29 14:04:00", Date.class); System.out.println(object3.getClass().getTypeName()); System.out.println(object3);

// BeanUtils設置屬性時,自動進行類型轉換 MyConverter converter = new MyConverter("yyyy-MM-dd HH:mm:ss"); // 注冊該轉換器 ConvertUtils.register(converter, Date.class); Animal a5 = new Animal(); BeanUtils.copyProperty(a5, "birth", "2017-11-29 14:04:00"); System.out.println(a5);// Animal [name=null, age=0, color=null, sex=null, birth=Wed Nov 29 14:04:00 CST 2017]

PropertyUtils

BeanUtils與PropertyUtils這兩個類幾乎有一摸一樣的功能,唯一的區別是:BeanUtils在對Bean賦值是會進行類型轉化。

舉例來說也就是在copyProperty時只要屬性名相同,就算類型不同,BeanUtils也可以進行copy;而PropertyBean則可能會報錯!!當然2個Bean之間的同名屬性的類型必須是可以轉化的,否則用BeanUtils一樣會報錯。若實現了org.apache.commons.beanutils.Converter接口則可以自定義類型之間的轉化。由于不做類型轉化,用PropertyUtils在速度上會有很大提高!


CollectionUtils

利用這個工具類,我們對集合進行修改、查詢、過濾等操作

CollectionUtils屬于commons-collections

String[] arrA = new String[] { "1", "2", "3" }; String[] arrB = new String[] { "1", "a", "b" }; List<String> listA = Arrays.asList(arrA); List<String> listB = Arrays.asList(arrB);// 判斷集合是否為 空 System.out.println(CollectionUtils.isEmpty(listA));// false System.out.println(CollectionUtils.isEmpty(listB));// false// 判斷集合是否為 不為空 System.out.println(CollectionUtils.isNotEmpty(listA));// true System.out.println(CollectionUtils.isNotEmpty(listB));// true// 兩個集合的比較 System.out.println(CollectionUtils.isEqualCollection(listA, listB));// false// 集合的操作 // 取并集 System.out.println(CollectionUtils.union(listA, listB));// [1, a, 2, b, 3] // 取交集 System.out.println(CollectionUtils.intersection(listA, listB));// [1] // 取交集的補集 System.out.println(CollectionUtils.disjunction(listA, listB));// [a, 2, b, 3] // 取集合相減 System.out.println(CollectionUtils.subtract(listA, listB));// [2, 3] System.out.println(CollectionUtils.subtract(listB, listA));// [a, b]List<String> listC = new ArrayList<>(); listC.add("1"); listC.add("2"); listC.add("3"); String[] arrC = { "4", "5", "6" }; // 向集合中添加值 CollectionUtils.addAll(listC, arrC); System.out.println(listC);// [1, 2, 3, 4, 5, 6]
備注:

整理的不完善,待后期完善

總結

以上是生活随笔為你收集整理的apache-commons之BeanUtils、ConvertUtils、PropertyUtils、CollectionUtils的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线免费观看av片 | 激情伊人网| av动漫在线免费观看 | 亚洲dvd| 超碰黄色 | 色爱综合网 | 欧美插插视频 | 色香蕉网站 | 日本少妇b | 四虎影视在线播放 | 国产高清成人久久 | 欧美不卡三区 | 亚洲视频高清 | 亚洲三级电影网站 | 尤物视频一区 | 5566在线| 国产精品高潮呻吟久久久 | 亚洲国产毛片aaaaa无费看 | 爱爱视频在线播放 | 四虎影视www在线播放 | 18精品爽国产白嫩精品 | 青娱乐毛片 | 看全色黄大色黄大片大学生 | 国产性精品 | 日本男男激情gay办公室 | 亚洲成人av影片 | 成人在线免费看视频 | 青青草小视频 | 成人午夜视频网站 | 午夜黄视频 | 国产裸体美女永久免费无遮挡 | 国产精品久久久久久久无码 | 在线观看免费 | 欧美日韩性生活视频 | 国产精品一区在线看 | 亚洲精品天堂在线观看 | 中文字幕一区二区三区在线视频 | 亚洲成人免费电影 | 极品美女开粉嫩精品 | 99热这里只有精品久久 | 香蕉视频黄在线观看 | 日本免费看| 在线观看欧美精品 | 亚洲鲁鲁| 伊人222成人综合网 亚洲日本中文 | 成人28深夜影院 | 亚洲图片一区二区三区 | 91ts人妖另类精品系列 | 日本黄色网络 | 日韩一级精品 | 伊人久久大 | 在线观看视频二区 | 欧美日韩人妻精品一区二区三区 | 国产精品久久麻豆 | 欧美日韩综合在线 | 欧美专区 日韩专区 | 干日本少妇首页 | 最新中文在线视频 | 欧美国产日本 | 综合色88| 久久青草视频 | av在线不卡网站 | 久久99精品国产91久久来源 | 日韩精品人妻中文字幕 | 男男啪啪网站 | 亚洲中文字幕无码一区 | 成人短视频在线播放 | 调教丰满的已婚少妇在线观看 | 国产精品免费看片 | 欧美日韩看片 | 国产第十页 | 欧美性插动态图 | 国产精品国色综合久久 | 亚洲天码中字 | 99re这里有精品 | www.在线观看网站 | 国产伦精品一区二区免费 | 亚洲天堂国产 | 久久伊人操 | 黄色性情网站 | 夜夜艹天天干 | 免费一区视频 | 伊人77| 黄色欧美网站 | 欧美影视一区 | 美女擦边视频 | 蜜臀久久99精品久久久画质超高清 | 日本不卡一区 | 国产免费一区二区三区免费视频 | 在线免费小电影 | 高清免费视频日本 | 粗了大了 整进去好爽视频 日本女优中文字幕 | 亚洲熟妇av一区二区三区 | 日韩成人精品 | 亚洲无在线观看 | 亚洲香蕉中文网 | h片在线免费观看 | 青青视频一区二区 | 日韩一区二区欧美 |