1 
                    
                    NillSpake      2021-08-11 16:10:14 +08:00 
                    
                    
                 | 
            
     2 
                    
                    vance123      2021-08-11 16:10:51 +08:00    作业自己做 
                 | 
            
     3 
                    
                    guaguaguaxia1      2021-08-11 16:13:20 +08:00 
                    
                    排序顺序外部传入啥意思 
                 | 
            
     4 
                    
                    Daisy17607   OP @NillSpake @vance123 这种 
                List<RowSortDTO> collect = rows.stream().sorted( Comparator.comparing(RowSortDTO::getVal1) .thenComparing(RowSortDTO::getVal2) .thenComparing(RowSortDTO::getVal3) .thenComparing(RowSortDTO::getVal4) .thenComparing(RowSortDTO::getVal5) ).collect(java.util.stream.Collectors.toList()); 这都是自然顺序排的嘛。从外面指定一个顺序,比如一个布尔,或一个枚举,表明是正序还是倒序  | 
            
     5 
                    
                    Daisy17607   OP @guaguaguaxia1 看我上条回复说清楚没 
                 | 
            
     6 
                    
                    28Sv0ngQfIE7Yloe      2021-08-11 16:20:32 +08:00 
                    
                    可以啊 实现几个策略枚举就行了啊。然后调用枚举的排序方法就好 
                 | 
            
     7 
                    
                    chendy      2021-08-11 16:25:18 +08:00 
                    
                    维护一个 Map<String, Comparator<Stirng>> ,接收一个 String,取 Comparator 做排序 
                如果只有正序倒序就接个 boolean 判断一下就行了,没必要弄太复杂  | 
            
     8 
                    
                    INTOX8O      2021-08-11 16:54:53 +08:00 
                    
                    和一楼类似:维护一个 Function,以 Function 的具体实现为排序条件        https://z3.ax1x.com/2021/08/11/fUvR9x.png 
                 | 
            
     9 
                    
                    Daisy17607   OP  | 
            
     10 
                    
                    zliea      2021-08-11 17:17:00 +08:00 
                    
                    外部传入[{"sortBy":"xxx","direction":ASC}],然后去反射获取值然后拼接 Comparator ? 
                 | 
            
     11 
                    
                    Daisy17607   OP @ztechstack 差不多,就是根据指定的顺序决定我要不要加.reversed()方法 
                 | 
            
     12 
                    
                    thetbw      2021-08-11 17:34:04 +08:00 
                    
                    外部排序就是每个规则都有个优先级呗,例如 c 开头的优先级最高,x 开头的其次,那就按照传统的排序方法,遍历 这个外部规则,计算出一个优先级,先按照这个优先级排序,相同优先级再按照默认的。感觉和之前写过类似的 sql. 
                https://segmentfault.com/a/1190000021517916  | 
            
     13 
                    
                    quan7u      2021-08-11 18:06:50 +08:00 
                    
                    前几天做了个类似需求,无脑遍历了 
                 |