15
15
package zuo .biao .absgrade ;
16
16
17
17
import java .util .ArrayList ;
18
+ import java .util .Collections ;
19
+ import java .util .Comparator ;
18
20
import java .util .LinkedHashMap ;
19
21
import java .util .List ;
20
22
import java .util .Map ;
@@ -89,8 +91,8 @@ public interface DoubleGradeCallback<T> extends MultipleGradeCallback<T> {
89
91
}
90
92
91
93
92
-
93
-
94
+
95
+
94
96
/**转为单层
95
97
* 适用场景:微信朋友圈单层评论
96
98
* @param <T>
@@ -211,16 +213,32 @@ public static <T> List<T> toDouble(List<T> list, @NotNull DoubleGradeCallback<T>
211
213
return new ArrayList <T >(parentMap .values ());
212
214
}
213
215
214
-
215
-
216
+
217
+
216
218
/**转为多层(无限层级)
217
219
* 适用场景:文件夹多级文件(夹),例如系统文件夹和百度网盘
220
+ * sorted = false;
218
221
* @param <T>
219
222
* @param list
220
223
* @param callback
221
- * @return
224
+ * @return {@link #toMultiple(List, boolean, MultipleGradeCallback)}
222
225
*/
223
226
public static <T > List <T > toMultiple (List <T > list , @ NotNull MultipleGradeCallback <T > callback ) {
227
+ return toMultiple (list , false , callback );
228
+ }
229
+ /**转为多层(无限层级)
230
+ * 适用场景:文件夹多级文件(夹),例如系统文件夹和百度网盘
231
+ * @param <T>
232
+ * @param list
233
+ * @param sorted 已排序,这里不再需要排序
234
+ * @param callback
235
+ * @return
236
+ * @see {@link #sort(List, GradeCallback)}
237
+ */
238
+ public static <T > List <T > toMultiple (List <T > list , boolean sorted , @ NotNull MultipleGradeCallback <T > callback ) {
239
+ if (sorted == false ) {
240
+ list = sort (list , callback );
241
+ }
224
242
if (list == null || list .isEmpty ()) {
225
243
return list ;
226
244
}
@@ -299,4 +317,35 @@ public static <T> List<T> toMultiple(List<T> list, @NotNull MultipleGradeCallbac
299
317
return topItemMap == null ? null : new ArrayList <T >(topItemMap .values ());
300
318
}
301
319
320
+
321
+ /**列表按id升序排序
322
+ * 解决顺序错乱导致结果不全
323
+ * @param list
324
+ * @param callback
325
+ * @return
326
+ */
327
+ public static <T > List <T > sort (List <T > list , final GradeCallback <T > callback ) {
328
+
329
+ if (list != null && list .isEmpty () == false ) {
330
+
331
+ Collections .sort (list , new Comparator <T >() {
332
+
333
+ @ Override
334
+ public int compare (T o1 , T o2 ) {
335
+ Long id1 = o1 == null ? null : callback .getId (o1 );
336
+ Long id2 = o2 == null ? null : callback .getId (o2 );
337
+ if (id1 == null ) {
338
+ id1 = new Long (0 );
339
+ }
340
+ if (id2 == null ) {
341
+ id2 = new Long (0 );
342
+ }
343
+ return id1 .compareTo (id2 );
344
+ }
345
+ });
346
+ }
347
+
348
+ return list ;
349
+ }
350
+
302
351
}
0 commit comments