zoukankan      html  css  js  c++  java
  • 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

     

    强者自救 圣者渡人
  • 相关阅读:
    POJ 1426 Find The Multiple(数论——中国同余定理)
    POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
    POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
    POJ 3278 Catch That Cow(模板——BFS)
    HDU 1071 The area
    HDU 1213 How Many Tables(模板——并查集)
    POJ 1611 The Suspects
    light oj 1214 Large Division
    POJ 1258 Agri-Net(Prim算法求解MST)
    POJ 2387 Til the Cows Come Home(模板——Dijkstra算法)
  • 原文地址:https://www.cnblogs.com/agilestyle/p/15618581.html
Copyright © 2011-2022 走看看