java在操作字符串的首字母变为大写,以及list根据list中对象的某字段(为String类型),去重,相关代码如下
import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;/** * <p>Description: 处理集合的工具类 </p> * <p>Copyright: Copyright (c) 2017 </p> * <p>Date: 2017年2月20日 </p> * <p>Company: Ausware </p> * @author chenc * @version V1.0 */public class CollectionUtil { /** * 对按fieldName分组的list进行fieldName的值重复的值设置非第一次为该值的对象该值为空字符串 * @param ts * @param fieldName 字段名(该字段类型为String) * @return * @throws Exception */ public static List<? extends Object> removeRepeatItemByField(List<? extends Object> ts, String fieldName) throws Exception{ if (ts == null ||ts.size() == 0) { return ts; } Class<?> clazz = ts.get(0).getClass(); Field field = clazz.getDeclaredField(fieldName); Method methodg = clazz.getDeclaredMethod("get" + captureName(fieldName)); Method methods = clazz.getDeclaredMethod("set" + captureName(fieldName), String.class); if (field != null && methodg != null && methods != null) { List<String> list = new ArrayList<String>(); for (int i = 0; i < ts.size(); i++) { Object obj = ts.get(i); String s = (String) methodg.invoke(obj); if (list.contains(s)) { methods.invoke(obj, ""); }else { list.add(s); } } } return ts; } /** * 字符串首字母大写 * @param name * @return */ public static String captureName(String name) { char[] cs = name.toCharArray(); //cs[0]-=(cs[0]>96&&cs[0]<123)?32:0; if (97 <= cs[0] && cs[0] <= 122) { cs[0] -= 32; } return String.valueOf(cs); } }
新闻热点
疑难解答