package com.boying.util; import org.springframework.beans.BeanUtils; import com.boying.entity.EnterPark; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author kdq * @version 1.0.0 * @ClassName PlateComparator.java * @Description TODO * @createTime 2024年04月19日 15:57:00 */ public class PlateComparator { public static List> getList(String carNo, List enterParkList) { List> list = new ArrayList<>(); for (EnterPark enterPark : enterParkList) { int i = compareLicensePlates(carNo, enterPark.getCarNo()); if (i<2){ Map returnMap = new HashMap(); BeanInfo beanInfo = null; try { beanInfo = Introspector.getBeanInfo(enterPark.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : propertyDescriptors) { String propertyName = pd.getName(); if (!"class".equals(propertyName)) { Method readMethod = pd.getReadMethod(); Object result = readMethod.invoke(enterPark); if (result != null) { returnMap.put(propertyName, result); } else { returnMap.put(propertyName, ""); } } } } catch (IntrospectionException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } returnMap.put("count",i); // 新增次数 list.add(returnMap); } } return list; } public static int compareLicensePlates(String oldLicensePlate, String newLicensePlate) { int length = Math.min(oldLicensePlate.length(), newLicensePlate.length()); int count = 0; for (int i = 0; i < length; i++) { if (oldLicensePlate.charAt(i) != newLicensePlate.charAt(i)) { count ++; } } // 如果新车牌比旧车牌长,则追加新车牌多出的字符 if (newLicensePlate.length() > oldLicensePlate.length()) { count++; } return count; } }