动态转换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());
}
}