标签:sort ProductBO org commons new import 排序 多字段 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.0</modelVersion> <groupId>org.fool</groupId> <artifactId>SortDemo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.11</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils-core</artifactId> <version>1.8.3</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils-bean-collections</artifactId> <version>1.8.3</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </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<Object> objects = new ArrayList<>(); objects.add(new BeanComparator("sort.top", comparator1)); objects.add(new BeanComparator("sort.weight", comparator2)); ComparatorChain comparatorChain = new ComparatorChain(objects); Collections.sort(list, comparatorChain); } }
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)); List<ProductBO> list = 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
标签:sort,ProductBO,org,commons,new,import,排序,多字段,JavaBean 来源: https://www.cnblogs.com/agilestyle/p/15618581.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。