List常用工具类整理中...

122 阅读1分钟
/**
 * 对集合内数据进行排序
 * 
 * @param source  待排序的集合
 *            
 * @param orderField  排序字段,此字段值必须是可转换为数字的
 *            
 * @param asc  是否正序:false时倒序
 *            
 */
public static <E> void sort(List<E> source, final String orderField, final boolean asc) {
   if (CollectionUtils.isNotEmpty(source) && StringUtils.isNotBlank(orderField)) {

      Collections.sort(source, new Comparator<E>() {
         @Override
         public int compare(E o1, E o2) {
            Integer o1order = 0;
            Integer o2order = 0;
            try {
               o1order = StringUtil.toInt(PropertyUtils.getProperty(o1, orderField));
               o2order = StringUtil.toInt(PropertyUtils.getProperty(o2, orderField));
            } catch (Exception e) {
            }
            if (asc) {
               return o1order.compareTo(o2order);
            } else {
               return o2order.compareTo(o1order);
            }
         }
      });
   }
}
/**
 * 将dataList按照指定列,指定的顺序排序
 * 
 * @param dataList
 * @param sortField
 * @param sortByList
 */
public static void sortByList(List<Map<String, Object>> dataList, String sortField, List<String> sortByList) {
   Collections.sort(dataList, ((o1, o2) -> {
      int io1 = sortByList.indexOf(MapUtils.getString(o1, sortField));
      int io2 = sortByList.indexOf(MapUtils.getString(o2, sortField));
      if (io1 != -1) {
         io1 = dataList.size() - io1;
      }
      if (io2 != -1) {
         io2 = dataList.size() - io2;
      }
      return io2 - io1;
   }));
}
//List<String> dataIdList = ListUtil.getFieldList(sourceDatalist, "NAME");
/**
 * 删除list集合中前多少个元素
 * 
 * @param list
 * @param index 要删除的数量
 *            
 */
public static <T> void remove(List<T> list, int index) {
   if (list.size() > index) {
      for (int i = 0; i < index; i++) {
         list.remove(0);
      }
   } else {
      list.clear();
   }
}