list进行升序和降序排序的工具类,其中包含对list中是int类型的、list中是string类型的、是实体类的,如果list中是实体类,以实体类string类型的字段进行进行排序的、以实体类int类型的字段进行排序的等
时间: 2024-03-02 16:54:11 浏览: 51
好的,针对你的问题,我可以给你提供以下代码实现:
```
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ListSortUtil {
/**
* 对List<Integer>类型的数据进行升序排序
*
* @param list 要排序的List<Integer>
*/
public static void sortIntAsc(List<Integer> list) {
Collections.sort(list);
}
/**
* 对List<Integer>类型的数据进行降序排序
*
* @param list 要排序的List<Integer>
*/
public static void sortIntDesc(List<Integer> list) {
Collections.sort(list, Comparator.reverseOrder());
}
/**
* 对List<String>类型的数据进行升序排序
*
* @param list 要排序的List<String>
*/
public static void sortStringAsc(List<String> list) {
Collections.sort(list);
}
/**
* 对List<String>类型的数据进行降序排序
*
* @param list 要排序的List<String>
*/
public static void sortStringDesc(List<String> list) {
Collections.sort(list, Comparator.reverseOrder());
}
/**
* 对List<T>类型的数据进行升序排序,根据实体类的String类型字段进行排序
*
* @param list 要排序的List<T>
* @param property 实体类的String类型字段
*/
public static <T> void sortEntityStringAsc(List<T> list, String property) {
Collections.sort(list, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
String value1 = EntityUtil.getPropertyValue(o1, property);
String value2 = EntityUtil.getPropertyValue(o2, property);
return value1.compareTo(value2);
}
});
}
/**
* 对List<T>类型的数据进行降序排序,根据实体类的String类型字段进行排序
*
* @param list 要排序的List<T>
* @param property 实体类的String类型字段
*/
public static <T> void sortEntityStringDesc(List<T> list, String property) {
Collections.sort(list, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
String value1 = EntityUtil.getPropertyValue(o1, property);
String value2 = EntityUtil.getPropertyValue(o2, property);
return value2.compareTo(value1);
}
});
}
/**
* 对List<T>类型的数据进行升序排序,根据实体类的int类型字段进行排序
*
* @param list 要排序的List<T>
* @param property 实体类的int类型字段
*/
public static <T> void sortEntityIntAsc(List<T> list, String property) {
Collections.sort(list, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
int value1 = EntityUtil.getPropertyValueInt(o1, property);
int value2 = EntityUtil.getPropertyValueInt(o2, property);
return Integer.compare(value1, value2);
}
});
}
/**
* 对List<T>类型的数据进行降序排序,根据实体类的int类型字段进行排序
*
* @param list 要排序的List<T>
* @param property 实体类的int类型字段
*/
public static <T> void sortEntityIntDesc(List<T> list, String property) {
Collections.sort(list, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
int value1 = EntityUtil.getPropertyValueInt(o1, property);
int value2 = EntityUtil.getPropertyValueInt(o2, property);
return Integer.compare(value2, value1);
}
});
}
}
/**
* 实体类工具类
*/
class EntityUtil {
/**
* 获取实体类的属性值,返回String类型
*
* @param obj 实体类对象
* @param fieldName 属性名称
* @return 属性值,String类型
*/
public static String getPropertyValue(Object obj, String fieldName) {
try {
String methodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
return String.valueOf(obj.getClass().getMethod(methodName).invoke(obj));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取实体类的属性值,返回int类型
*
* @param obj 实体类对象
* @param fieldName 属性名称
* @return 属性值,int类型
*/
public static int getPropertyValueInt(Object obj, String fieldName) {
try {
String methodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
return Integer.parseInt(String.valueOf(obj.getClass().getMethod(methodName).invoke(obj)));
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
```
其中,我们定义了一个 ListSortUtil 工具类,用于对 List 进行升序和降序排序。对于 List 中是 int 类型的数据,我们可以直接使用 Collections.sort() 方法进行排序;对于 List 中是 String 类型的数据,我们也可以直接使用 Collections.sort() 方法进行排序。而对于 List 中是实体类的数据,我们则需要通过实体类工具类 EntityUtil 来获取实体类的属性值,并根据属性值进行排序。
你可以根据需要,调用其中的方法来对 List 进行排序。