
dev.utils.common.comparator.ComparatorUtils Maven / Gradle / Ivy
package dev.utils.common.comparator;
import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import dev.utils.common.CollectionUtils;
import dev.utils.common.FileUtils;
import dev.utils.common.comparator.sort.DateSort;
import dev.utils.common.comparator.sort.DateSortAsc;
import dev.utils.common.comparator.sort.DateSortDesc;
import dev.utils.common.comparator.sort.DoubleSort;
import dev.utils.common.comparator.sort.DoubleSortAsc;
import dev.utils.common.comparator.sort.DoubleSortDesc;
import dev.utils.common.comparator.sort.FileLastModifiedSortAsc;
import dev.utils.common.comparator.sort.FileLastModifiedSortDesc;
import dev.utils.common.comparator.sort.FileLengthSortAsc;
import dev.utils.common.comparator.sort.FileLengthSortDesc;
import dev.utils.common.comparator.sort.FileNameSortAsc;
import dev.utils.common.comparator.sort.FileNameSortDesc;
import dev.utils.common.comparator.sort.FileSortAsc;
import dev.utils.common.comparator.sort.FileSortDesc;
import dev.utils.common.comparator.sort.FloatSort;
import dev.utils.common.comparator.sort.FloatSortAsc;
import dev.utils.common.comparator.sort.FloatSortDesc;
import dev.utils.common.comparator.sort.IntSort;
import dev.utils.common.comparator.sort.IntSortAsc;
import dev.utils.common.comparator.sort.IntSortDesc;
import dev.utils.common.comparator.sort.LongSort;
import dev.utils.common.comparator.sort.LongSortAsc;
import dev.utils.common.comparator.sort.LongSortDesc;
import dev.utils.common.comparator.sort.StringSort;
import dev.utils.common.comparator.sort.StringSortAsc;
import dev.utils.common.comparator.sort.StringSortDesc;
import dev.utils.common.comparator.sort.StringSortWindowsSimple;
import dev.utils.common.comparator.sort.StringSortWindowsSimple2;
import dev.utils.common.comparator.sort.WindowsExplorerFileSimpleComparator;
import dev.utils.common.comparator.sort.WindowsExplorerFileSimpleComparator2;
import dev.utils.common.comparator.sort.WindowsExplorerStringSimpleComparator;
import dev.utils.common.comparator.sort.WindowsExplorerStringSimpleComparator2;
/**
* detail: 排序比较器工具类
* @author Ttt
*
* 使用以下方法要求 List 中不能存在 null 数据
* {@link #sort(List, Comparator)}
* {@link #sortAsc(List)}
* {@link #sortDesc(List)}
* 视情况可用以下方法清空 null 数据
* {@link CollectionUtils#clearNull(Collection)}
*
* File 排序可直接使用以下方法获取 List
* {@link FileUtils#listOrEmpty(File)}
* {@link FileUtils#listFilesOrEmpty(File)}
*
*/
public final class ComparatorUtils {
private ComparatorUtils() {
}
/**
* List 反转处理
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean reverse(final List> list) {
if (list != null) {
Collections.reverse(list);
return true;
}
return false;
}
/**
* List 排序处理
* @param list 集合
* @param comparator 排序比较器
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sort(
final List list,
final Comparator super T> comparator
) {
if (list != null) {
Collections.sort(list, comparator);
return true;
}
return false;
}
/**
* List 升序处理
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static > boolean sortAsc(final List list) {
if (list != null) {
Collections.sort(list);
return true;
}
return false;
}
/**
* List 降序处理
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortDesc(final List list) {
return sort(list, Collections.reverseOrder());
}
// ========
// = File =
// ========
/**
* 文件修改时间升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileLastModifiedAsc(final List list) {
return sort(list, new FileLastModifiedSortAsc());
}
/**
* 文件修改时间降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileLastModifiedDesc(final List list) {
return sort(list, new FileLastModifiedSortDesc());
}
/**
* 文件大小升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileLengthAsc(final List list) {
return sort(list, new FileLengthSortAsc());
}
/**
* 文件大小降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileLengthDesc(final List list) {
return sort(list, new FileLengthSortDesc());
}
/**
* 文件名升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileNameAsc(final List list) {
return sort(list, new FileNameSortAsc());
}
/**
* 文件名降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileNameDesc(final List list) {
return sort(list, new FileNameSortDesc());
}
/**
* 文件升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileAsc(final List list) {
return sort(list, new FileSortAsc());
}
/**
* 文件降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFileDesc(final List list) {
return sort(list, new FileSortDesc());
}
// ========
// = Date =
// ========
/**
* Date 升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortDateAsc(final List list) {
return sort(list, new DateSortAsc<>());
}
/**
* Date 降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortDateDesc(final List list) {
return sort(list, new DateSortDesc<>());
}
// =========
// = Double =
// =========
/**
* Double 升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortDoubleAsc(final List list) {
return sort(list, new DoubleSortAsc<>());
}
/**
* Double 降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortDoubleDesc(final List list) {
return sort(list, new DoubleSortDesc<>());
}
// =========
// = Float =
// =========
/**
* Float 升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFloatAsc(final List list) {
return sort(list, new FloatSortAsc<>());
}
/**
* Float 降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortFloatDesc(final List list) {
return sort(list, new FloatSortDesc<>());
}
// =======
// = Int =
// =======
/**
* Int 升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortIntAsc(final List list) {
return sort(list, new IntSortAsc<>());
}
/**
* Int 降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortIntDesc(final List list) {
return sort(list, new IntSortDesc<>());
}
// ========
// = Long =
// ========
/**
* Long 升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortLongAsc(final List list) {
return sort(list, new LongSortAsc<>());
}
/**
* Long 降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortLongDesc(final List list) {
return sort(list, new LongSortDesc<>());
}
// =========
// = String =
// =========
/**
* String 升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortStringAsc(final List list) {
return sort(list, new StringSortAsc<>());
}
/**
* String 降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortStringDesc(final List list) {
return sort(list, new StringSortDesc<>());
}
// =
/**
* String Windows 排序比较器简单实现升序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortStringWindowsSimpleAsc(final List list) {
return sort(list, new StringSortWindowsSimple<>());
}
/**
* String Windows 排序比较器简单实现降序排序
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortStringWindowsSimpleDesc(final List list) {
boolean result = sortStringWindowsSimpleAsc(list);
if (result) reverse(list);
return result;
}
/**
* String Windows 排序比较器简单实现升序排序 ( 实现方式二 )
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortStringWindowsSimple2Asc(final List list) {
return sort(list, new StringSortWindowsSimple2<>());
}
/**
* String Windows 排序比较器简单实现降序排序 ( 实现方式二 )
* @param list 集合
* @param 泛型
* @return {@code true} success, {@code false} fail
*/
public static boolean sortStringWindowsSimple2Desc(final List list) {
boolean result = sortStringWindowsSimple2Asc(list);
if (result) reverse(list);
return result;
}
// ====================
// = Windows Explorer =
// ====================
/**
* Windows 目录资源文件升序排序
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerFileSimpleComparatorAsc(final List list) {
return sort(list, new WindowsExplorerFileSimpleComparator());
}
/**
* Windows 目录资源文件降序排序
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerFileSimpleComparatorDesc(final List list) {
boolean result = sortWindowsExplorerFileSimpleComparatorAsc(list);
if (result) reverse(list);
return result;
}
/**
* Windows 目录资源文件升序排序 ( 实现方式二 )
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerFileSimpleComparator2Asc(final List list) {
return sort(list, new WindowsExplorerFileSimpleComparator2());
}
/**
* Windows 目录资源文件降序排序 ( 实现方式二 )
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerFileSimpleComparator2Desc(final List list) {
boolean result = sortWindowsExplorerFileSimpleComparator2Asc(list);
if (result) reverse(list);
return result;
}
// =
/**
* Windows 目录资源文件名升序排序
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerStringSimpleComparatorAsc(final List list) {
return sort(list, new WindowsExplorerStringSimpleComparator());
}
/**
* Windows 目录资源文件名降序排序
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerStringSimpleComparatorDesc(final List list) {
boolean result = sortWindowsExplorerStringSimpleComparatorAsc(list);
if (result) reverse(list);
return result;
}
/**
* Windows 目录资源文件名升序排序 ( 实现方式二 )
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerStringSimpleComparator2Asc(final List list) {
return sort(list, new WindowsExplorerStringSimpleComparator2());
}
/**
* Windows 目录资源文件名降序排序 ( 实现方式二 )
* @param list 集合
* @return {@code true} success, {@code false} fail
*/
public static boolean sortWindowsExplorerStringSimpleComparator2Desc(final List list) {
boolean result = sortWindowsExplorerStringSimpleComparator2Asc(list);
if (result) reverse(list);
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy