集合排序(BigDecimal、根据对象某个属性排序)
/**
* 按照属性property给list排序
* 支持的属性类型:Short Integer Long Float Double BigDecimal Date
* @param <E>
* @param list
* @param property
* @param clazz
* @param ascOrDesc (true 是 asc, false 是 desc)
*/
public static<E> void sortList(List<E> list, final String property, final boolean ascOrDesc) {
if (list == null || list.isEmpty()) {
return;
}
Collections. sort(list, new Comparator<E>() {
@Override
public int compare(E o1, E o2) {
try {
Field field1 = o1.getClass().getField(property);
Field field2 = o2.getClass().getField(property);
try {
Class<?> clazz = field1.get(o1).getClass();
if (clazz == Short. class || clazz == Integer.class || clazz == Long.class
|| clazz == Float.class || clazz == Double.class) {
if (ascOrDesc) { //asc
return field1.getInt(o1) - field2.getInt(o2);
} else { //desc
return field2.getInt(o2) - field1.getInt(o1);
}
}
if (clazz == BigDecimal. class) {
BigDecimal b1 = (BigDecimal)field1.get(o1);
BigDecimal b2 = (BigDecimal)field2.get(o2);
if (ascOrDesc) { //asc
return b1.compareTo(b2);
} else { //desc
return b2.compareTo(b1);
}
}
if (clazz == Date. class) {
Date b1 = (Date)field1.get(o1);
Date b2 = (Date)field2.get(o2);
if (ascOrDesc) { //asc
return b1.compareTo(b2);
} else { //desc
return b2.compareTo(b1);
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return 0;
}
});
}
/**
* 按照属性property给array排序
* 支持的属性类型:Short Integer Long Float Double BigDecimal Date
* @param <E>
* @param e
* @param property
* @param ascOrDesc (true 是 asc, false 是 desc)
*/
public static<E> void sortArray(E[] e, final String property, final boolean ascOrDesc) {
if (e == null || e. length == 0) {
return;
}
Arrays. sort(e, new Comparator<E>() {
@Override
public int compare(E o1, E o2) {
try {
Field field1 = o1.getClass().getField(property);
Field field2 = o2.getClass().getField(property);
try {
Class<?> clazz = field1.get(o1).getClass();
if (clazz == Short. class || clazz == Integer.class || clazz == Long.class
|| clazz == Float.class || clazz == Double.class) {
if (ascOrDesc) { //asc
return field1.getInt(o1) - field2.getInt(o2);
} else { //desc
return field2.getInt(o2) - field1.getInt(o1);
}
}
if (clazz == BigDecimal. class) {
BigDecimal b1 = (BigDecimal)field1.get(o1);
BigDecimal b2 = (BigDecimal)field2.get(o2);
if (ascOrDesc) { //asc
return b1.compareTo(b2);
} else { //desc
return b2.compareTo(b1);
}
}
if (clazz == Date. class) {
Date b1 = (Date)field1.get(o1);
Date b2 = (Date)field2.get(o2);
if (ascOrDesc) { //asc
return b1.compareTo(b2);
} else { //desc
return b2.compareTo(b1);
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return 0;
}
});
}
/**
* 直接用Collections.sort(list <BigDecimal>);即可,如果是BigDecimal数组则需要像下面这样重写
* @param bds
* @param ascOrDesc
*/
public static void sortBigDecimalArray(BigDecimal[] bds, final boolean ascOrDesc) {
if (bds == null || bds. length == 0) {
return;
}
Arrays. sort(bds, new Comparator<BigDecimal>() {
@Override
public int compare(BigDecimal o1, BigDecimal o2) {
if (ascOrDesc) { //asc
return o1.compareTo(o2);
} else { //desc
return o2.compareTo(o1);
}
}
});
}
相关推荐
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...
导入jar 包 调用 String[] arr1 = new String[1]; ... 参数1 排序的集合 参数2 排序的字段(与定义字段一致) 可多个 参数3 排序方式(asc desc) 暂时只支持String 和int的排序 可能有些BUG 敬请谅解
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。
本文将深入探讨Java中集合排序的相关知识点,包括基本概念、排序方法以及常用类的实现。 1. **集合接口与实现** Java集合框架主要包括`List`, `Set`, 和 `Map`三大接口。其中,`List`接口要求元素有序,允许重复;...
在Java集合排序方面,我们主要关注List和Map。对于List,可以使用Collections.sort()方法进行排序,这个方法默认使用元素的自然顺序,如果元素是自定义对象,需要实现Comparable接口或者提供Comparator。对于Map,...
### Java中进行集合排序 在Java编程中,对集合(如`List`)中的对象进行排序是一项常见的操作。本文将详细介绍如何根据对象的特定属性来实现升序或降序排序。 #### 标题:Java中进行集合排序 该标题表明文章的...
Java集合排序涉及的知识点广泛,包括基本的`Collections.sort()`、自定义Comparator、Stream API、并行排序以及泛型等。理解这些概念并熟练运用,能显著提高代码质量和效率。在实际编程中,根据具体需求选择合适的...
标题中的“JAVA 注册界面连数据库+集合排序”揭示了两个主要的知识点:Java编程以及数据库连接,特别是与MySQL数据库的交互,同时涉及到数据结构的排序处理。 首先,让我们深入探讨Java编程。Java是一种广泛使用的...
.Net中的集合排序可以这么玩你知道吗 .Net中的集合排序可以这么玩你知道吗
### Java集合排序及java集合类详解 #### 集合框架概述 集合是Java编程语言中非常核心且广泛使用的部分,对于深入理解和高效使用Java语言至关重要。本文将围绕Java集合框架进行详细介绍,包括Collection、List、Set...
在"java集合排序及文件读取.rar"这个压缩包中,我们很可能会找到关于如何在Java中对集合进行排序以及如何读取文件的示例代码。让我们详细探讨这些关键知识点。 **Java集合排序** Java集合框架包括接口如`List`、`...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc