public static String concatJson(List list, boolean alreadyElementJson, boolean keepEmptyColumn) { if (list == null) { return null; } StringBuilder sb = new StringBuilder(); sb.append("["); int size = list.size(); for (int i = 0; i < size; i++) { T object = list.get(i); if (object == null) { sb.append("null"); } if (object instanceof Date) { sb.append("\"" + object + "\","); }else if(object instanceof String) { if( alreadyElementJson) { //如果已经是json字符串,则不加引号 sb.append(object.toString() + ","); }else { sb.append("\"" + object + "\","); } }else if (object instanceof Boolean){ sb.append(object.toString() + ","); } else { sb.append(objectToJson(object, keepEmptyColumn) + ","); } } // 去掉最后的逗号 if (sb.charAt(sb.length()-1) == ',') { sb.deleteCharAt(sb.length()-1); } sb.append("]"); return sb.toString(); }
public static String concatJson(List jsonObjects, boolean keepEmptyColumn) { if (jsonObjects == null) { return null; } if (jsonObjects.size() == 0) { return null; } StringBuilder sb = new StringBuilder(); sb.append("["); int size = jsonObjects.size(); for (int i = 0; i < size; i++) { sb.append(objectToJson(jsonObjects.get(i), keepEmptyColumn) + ","); } // 去掉最后的逗号 if (sb.charAt(sb.length()-1) == ',') { sb.deleteCharAt(sb.length()-1); } sb.append("]"); return sb.toString(); } //连接每个元素都已经是JSON的List public static String concatJsonStrings(List list){ if(list==null) return null; if(list.size()<=0) return "[]"; StringBuilder sb = new StringBuilder(); sb.append("["); int size = list.size(); for (int i = 0; i < size; i++) { sb.append(list.get(i) + ","); } // 去掉最后的逗号 if (sb.charAt(sb.length()-1) == ',') { sb.deleteCharAt(sb.length()-1); } sb.append("]"); return sb.toString(); }
处理集合的类:
1.通过条件筛选集合:
public static void removeByCondition(List list1, List list2, CollectionFilter filter) { for (int i = list1.size() - 1; i >= 0; i--) { T item1 = list1.get(i); for (T item2 : list2) { if (filter.same(item1, item2)) { list1.remove(i); } } } }
2.通过条件查找一个集合在另一个集合中存在的次数
public static Integer findExistCountByCondition(List list1, List list2, CollectionFilter filter) { int count = 0; for (int i = list1.size() - 1; i >= 0; i--) { T item1 = list1.get(i); for (T item2 : list2) { if (filter.same(item1, item2)) { count++; } } } return count; }
public static T findExistByCondition(List list1, List list2, CollectionFilter filter) { for (int i = list1.size() - 1; i >= 0; i--) { T item1 = list1.get(i); for (T item2 : list2) { if (filter.same(item1, item2)) { return item2; } } } return null; }
3.一个集合中根据条件合并,条件相同的只留前面的一个元素,后面的(满足条件的)元素都删除
public static void uniqueByCondition(List list, CollectionFilter filter) { for (int i = list.size() - 1; i >= 1; i--) { T item1 = list.get(i); for (int k = i - 1; k >= 0; k--) { T item2 = list.get(k); if (filter.same(item1, item2)) { list.remove(i); break; } } } }
4.一个集合中根据过滤,得到满足条件的集合
public static List filter(List list, Predicate predicate) { // list.stream().filter(predicate).collect(Collectors.toList()); //这是用stream方法 if (list == null) return null; if (predicate == null) return list; List result = new ArrayList<>(); int size = list.size(); for (int i = 0; i < size; i++) { T item1 = list.get(i); if (predicate.test(item1)) { result.add(item1); } } return result; }
一个集合中根据过滤,得到满足条件的集合的第一个元素
public static T filterFirst(List list, Predicate predicate) { // list.stream().filter(predicate).collect(Collectors.toList()); //这是用stream方法 if (list == null) return null; if (predicate == null) return null; List result = new ArrayList<>(); int size = list.size(); for (int i = 0; i < size; i++) { T item1 = list.get(i); if (predicate.test(item1)) { result.add(item1); } } if (result != null && result.size() > 0) { return result.get(0); } return null; } public static T findExsit(List list, Predicate predicate) { // list.stream().filter(predicate).collect(Collectors.toList()); //这是用stream方法 if (list == null) return null; if (predicate == null) return null; int size = list.size(); for (int i = 0; i < size; i++) { T item1 = list.get(i); if (predicate.test(item1)) { return item1; } } return null; } public static boolean findExsit(T[] arr, Predicate predicate) { // list.stream().filter(predicate).collect(Collectors.toList()); //这是用stream方法 if (arr == null) return false; if (predicate == null) return false; int size = arr.length; for (int i = 0; i < size; i++) { T item1 = arr[i]; if (predicate.test(item1)) { return true; } } return false; }
根据条件对已经排序的集合进行分组(必须排序后调用)
public static List> groupListByCategory(List allBooks, CollectionFilter filter) throws Exception { T oldRecord = null; List> allCategories = new ArrayList<>(); // 所有类的集合 List oneCategory = new ArrayList<>(); // 当前的一类 // 循环所有的对象,根据前后是否是同一类进行分类 for (T record : allBooks) { // 判断是否为新的一类 if (oldRecord == null || !filter.same(oldRecord, record)) { oneCategory = new ArrayList<>(); // 新的一类 oneCategory.add(record); allCategories.add(oneCategory); } else { oneCategory.add(record); } oldRecord = record; } return allCategories; }
暂时没有评论,来抢沙发吧~