/** 根据filterName以list中fileName属性进行模糊匹配
* @param list 需要过滤的集合
* @param fileName 属性名称
* @param fileterName 模糊匹配的值
* @return
*/
public static List filterByNameLike(List list,final String fileName,final String fileterName)
{
log.info("filterByNameLike now!");
if (null == list || list.isEmpty())
{
return list;
}
log.info("filterByNameLike list {} ",JSON.toJSONString(list));
log.info("str1",fileName,"str2",fileterName);
list = (List) list.stream().filter(o->checkObjectFile(o,fileName,fileterName)).collect(Collectors.toList());
return list;
}
/**
* 根据fileterName模糊匹配某属性的输出值
* @param list 需要过滤的集合
* @param fileName 属性名称
* @param fileterName 模糊匹配的值
* @return
*/
public static Boolean checkObjectFile(Object o,final String fileName,final String fileterName)
{
Class c = o.getClass();
String methodName = "get" + StringUtil.firstUpperCase(fileName);
Method declaredMethod = null;
String invokeStr = "";
try
{
declaredMethod = c.getDeclaredMethod(methodName, null);
}
catch (NoSuchMethodException e)
{
log.error("没有找到该方法:{" + methodName + "} filterByNameLike error",e);
}
try
{
invokeStr = declaredMethod.invoke(o).toString();
}
catch (IllegalAccessException e)
{
log.error("invoke执行失败!",e);
}
catch (InvocationTargetException e)
{
log.error("invoke执行失败!",e);
}
log.info("invokeStr {}",invokeStr);
return nameQueryLike(invokeStr,fileterName);
}
/**
* @param name
* @param listName 被模糊查询的字符串
* @return
*/
public static boolean nameQueryLike(final String name,final String listName)
{
log.info("nameQueryLike {} str1",name + " ,str2{} " + listName);
boolean flag = name.contains(listName);
log.info("nameQueryLike boolean {} ",flag);
return flag;
}
利用java反射给集合其中的某个属性做模糊匹配进行过滤
最新推荐文章于 2025-05-24 16:54:55 发布