動態轉換list的數據類型,將map類型的list轉成實體類類型的
/**
* 將一個map組成的list轉成實體類bean組成的list
* @param mapList 存了map對象的list
* @param clazz 需要將這些map轉成哪個實體類對象
* @return
*/
public <T> List<T> convertMapListToBeanList(List<Map> mapList,Class<T> clazz){
List<T> list=new ArrayList<T>();
for(Map map:mapList){
try {
T obj=clazz.newInstance();//創建bean的實例對象
for(Object o:map.keySet()){//遍歷map的key
for(Method m:clazz.getMethods()){//遍歷bean的類中的方法,找到set方法進行賦值
if(m.getName().toLowerCase().equals("set"+o.toString().toLowerCase())){
m.invoke(obj, map.get(o));
}
}
}
list.add(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
return list;
}
List泛型通過JSON轉換
List<user1> user=ArrayList<user1>
List<user2> listDqFistAudit= JSON.parseObject(JSON.toJSONString(user1), new TypeReference<List<user2>>() {});// 通過json改變對象類型
List兩個對象整合,並且使用 compareList.sort排序
public static void main(String[] args) {
List<ReplyInfo> replyInfos1 = new ArrayList<>();
ReplyInfo r1 = new ReplyInfo();
r1.setInsertTime(1544326153000L);//12-9
r1.setAlias("r1");
r1.setSiteid(2);
ReplyInfo r2 = new ReplyInfo();
r2.setInsertTime(1544585353000L);//12-12
r2.setAlias("r2");
r2.setSiteid(1);
replyInfos1.add(r1);
replyInfos1.add(r2);
List<ReplyInfo> replyInfos2 = new ArrayList<>();
ReplyInfo r3 = new ReplyInfo();
r3.setInsertTime(1544498954000L);//12-11
r3.setAlias("r3");
r3.setSiteid(1);
ReplyInfo r4 = new ReplyInfo();
r4.setInsertTime(1544412554000L);//12-10
r4.setAlias("r4");
r4.setSiteid(2);
ReplyInfo r5 = new ReplyInfo();
r5.setInsertTime(1544412555000L);//12-10
r5.setAlias("r5");
r5.setSiteid(3);
replyInfos2.add(r3);
replyInfos2.add(r4);
replyInfos2.add(r5);
//List對象合併
List<ReplyInfo> compareList = new ArrayList<>();
compareList.addAll(replyInfos1);
compareList.addAll(replyInfos2);
compareList.sort(new Comparator<ReplyInfo>(){
public int compare(ReplyInfo o1, ReplyInfo o2) {
//首先根據站點號排序,如果站點相同則對比時間。
int flag=o1.getSiteid()-(o2.getSiteid());
if(flag==0){
// return o1.getDate_time().compareTo(o2.getDate_time());//時間對比排序
return (int) (o1.getInsertTime()-o2.getInsertTime());
}else{
return flag;
}
}});
for(ReplyInfo cl:compareList ){
System.out.println(cl.getSiteid()+":::::"+cl.getInsertTime()+cl.getAlias());
}
}