List 集合指定值升序降序排列Comparator实现
升序排序
升序排序通常是指从小到大的排序。对于数值类型来说,可以直接使用 compareTo 方法,而对于其他类型,可以根据实际需求实现比较逻辑。
示例代码
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
class Spgg2BO {
private String spdm;
private String ggdm;
private String ggmc;
private Integer ggwz;
public Spgg2BO(String spdm, String ggdm, String ggmc, Integer ggwz) {
this.spdm = spdm;
this.ggdm = ggdm;
this.ggmc = ggmc;
this.ggwz = ggwz;
}
public Integer getGgwz() {
return ggwz;
}
}
public class Main {
public static void main(String[] args) {
List<Spgg2BO> spgg2List = new ArrayList<>();
// 添加一些示例数据
spgg2List.add(new Spgg2BO("001", "01", "规格一", 10));
spgg2List.add(new Spgg2BO("002", "02", "规格二", 5));
spgg2List.add(new Spgg2BO("003", "03", "规格三", 20));
// 使用Comparator.comparing按ggwz升序排序
spgg2List.sort(Comparator.comparing(Spgg2BO::getGgwz));
// 输出排序后的结果
for (Spgg2BO item : spgg2List) {
System.out.println(item.getGgwz());
}
}
}
降序排序
降序排序是指从大到小的排序。对于数值类型,可以通过反转比较结果来实现降序排序。
示例代码
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
class Spgg2BO {
private String spdm;
private String ggdm;
private String ggmc;
private Integer ggwz;
public Spgg2BO(String spdm, String ggdm, String ggmc, Integer ggwz) {
this.spdm = spdm;
this.ggdm = ggdm;
this.ggmc = ggmc;
this.ggwz = ggwz;
}
public Integer getGgwz() {
return ggwz;
}
}
public class Main {
public static void main(String[] args) {
List<Spgg2BO> spgg2List = new ArrayList<>();
// 添加一些示例数据
spgg2List.add(new Spgg2BO("001", "01", "规格一", 10));
spgg2List.add(new Spgg2BO("002", "02", "规格二", 5));
spgg2List.add(new Spgg2BO("003", "03", "规格三", 20));
// 使用Comparator.comparing按ggwz降序排序
spgg2List.sort(Comparator.comparing(Spgg2BO::getGgwz).reversed());
// 输出排序后的结果
for (Spgg2BO item : spgg2List) {
System.out.println(item.getGgwz());
}
}
}
在上面的降序排序示例中,我们使用了 Comparator.comparing(Spgg2BO::getGgwz).reversed() 方法来创建一个比较器,该比较器首先基于 getGgwz 方法获取的 ggwz 值进行比较,然后通过 .reversed() 方法来反转比较结果,从而实现降序排序。
总结来说,升序排序是按照自然顺序从小到大排序,而降序排序是按照相反的顺序从大到小排序。你可以通过改变比较器的实现方式来实现不同的排序顺序。