JavaBean 多字段排序
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/15618581.html
Project Directory
Maven Dependency
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0modelVersion> <groupId>org.foolgroupId> <artifactId>SortDemoartifactId> <version>1.0-SNAPSHOTversion> <properties> <maven.compiler.source>8maven.compiler.source> <maven.compiler.target>8maven.compiler.target> properties> <dependencies> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-lang3artifactId> <version>3.11version> dependency> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-collections4artifactId> <version>4.4version> dependency> <dependency> <groupId>commons-beanutilsgroupId> <artifactId>commons-beanutils-coreartifactId> <version>1.8.3version> dependency> <dependency> <groupId>commons-beanutilsgroupId> <artifactId>commons-beanutils-bean-collectionsartifactId> <version>1.8.3version> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <version>1.18.20version> dependency> dependencies> project>
SRC
SortBO.java
package org.fool.sort; import lombok.Builder; import lombok.Data; @Data @Builder public class SortBO { private Boolean top; private Integer weight; }
ProductBO.java
package org.fool.sort; import lombok.Builder; import lombok.Data; import org.apache.commons.beanutils.BeanComparator; import org.apache.commons.collections4.ComparatorUtils; import org.apache.commons.collections4.comparators.ComparableComparator; import org.apache.commons.collections4.comparators.ComparatorChain; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; @Data @Builder public class ProductBO { private Integer id; private SortBO sort; public static void sort(List<?> list) { Comparator<?> comparator1 = ComparatorUtils.booleanComparator(true); ComparableComparator<?> instance = ComparableComparator.INSTANCE; Comparator<?> comparator2 = ComparatorUtils.nullLowComparator(instance); List
Test.java
package org.fool.sort; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class Test { public static void main(String[] args) { ProductBO product1 = new ProductBO(1, new SortBO(false, 0)); ProductBO product2 = new ProductBO(2, new SortBO(false, 1)); ProductBO product3 = new ProductBO(3, new SortBO(true, 2)); ProductBO product4 = new ProductBO(4, new SortBO(true, 1)); Listlist = Stream.of(product1, product2, product3, product4).collect(Collectors.toList()); System.out.println("before sort: "); for (ProductBO record : list) { System.out.println(record); } ProductBO.sort(list); System.out.println("after sort: "); for (ProductBO record : list) { System.out.println(record); } } }
Run