22
33
44import com .taowater .taol .core .util .ConvertUtil ;
5+ import com .taowater .ztream .Any ;
56
67import java .util .*;
78import java .util .function .Function ;
1314 * 收集操作
1415 *
1516 * @author Zhu56
16- * @date 2022/11/13 19:12:35
17+ * @since 0.0.1
1718 */
1819public interface Collect <T > extends Stream <T > {
1920
2021 /**
2122 * 收集为集合
2223 *
2324 * @param collectionFactory 集合工厂
24- * @return {@link C }
25+ * @return 集合
2526 */
2627 default <C extends Collection <T >> C collect (Supplier <? extends C > collectionFactory ) {
2728 return collect (Collectors .toCollection (collectionFactory ));
@@ -32,28 +33,28 @@ default <C extends Collection<T>> C collect(Supplier<? extends C> collectionFact
3233 *
3334 * @param fun 属性
3435 * @param collectionFactory 集合工厂
35- * @return {@link C }
36+ * @return 集合
3637 */
3738 default <V , C extends Collection <V >> C collect (Function <? super T , ? extends V > fun , Supplier <? extends C > collectionFactory ) {
38- return this .map (fun ).collect (Collectors .toCollection (collectionFactory ));
39+ return this .map (e -> Any . of ( e ). get ( fun ) ).collect (Collectors .toCollection (collectionFactory ));
3940 }
4041
4142 /**
4243 * 转换类型收集
4344 *
4445 * @param clazz clazz
4546 * @param collectionFactory 收集工厂
46- * @return {@link C }
47+ * @return 集合
4748 */
4849 default <N , C extends Collection <N >> C collect (Class <N > clazz , Supplier <? extends C > collectionFactory ) {
49- return this .map (e -> ConvertUtil .convert (e , clazz )).collect (Collectors .toCollection (collectionFactory ));
50+ return this .map (e -> Any . of ( e ). get ( o -> ConvertUtil .convert (o , clazz ) )).collect (Collectors .toCollection (collectionFactory ));
5051 }
5152
5253 /**
5354 * 收集属性
5455 *
5556 * @param fun 属性
56- * @return {@link List }<{@link V }>
57+ * @return 属性 ArrayList 集合
5758 */
5859 default <V > List <V > collect (Function <? super T , ? extends V > fun ) {
5960 return this .collect (fun , ArrayList ::new );
@@ -63,7 +64,7 @@ default <V> List<V> collect(Function<? super T, ? extends V> fun) {
6364 * 转换元素类型并收集
6465 *
6566 * @param clazz clazz
66- * @return {@link List}<{@link N}>
67+ * @return 转换 ArrayList 集合
6768 */
6869 default <N > List <N > collect (Class <N > clazz ) {
6970 return this .collect (clazz , ArrayList ::new );
@@ -72,7 +73,7 @@ default <N> List<N> collect(Class<N> clazz) {
7273 /**
7374 * 收集为{@link ArrayList}
7475 *
75- * @return 集合
76+ * @return ArrayList 集合
7677 */
7778 default List <T > toList () {
7879 return collect (Collectors .toList ());
@@ -82,7 +83,7 @@ default List<T> toList() {
8283 * 收集某属性为list
8384 *
8485 * @param fun 函数
85- * @return {@link List }<{@link V }>
86+ * @return 属性 ArrayList 集合
8687 */
8788 default <V > List <V > toList (Function <? super T , ? extends V > fun ) {
8889 return this .collect (fun , ArrayList ::new );
@@ -92,7 +93,7 @@ default <V> List<V> toList(Function<? super T, ? extends V> fun) {
9293 * 转换类型收集为list
9394 *
9495 * @param clazz clazz
95- * @return {@link List}<{@link N}>
96+ * @return 转换 ArrayList 集合
9697 */
9798 default <N > List <N > toList (Class <N > clazz ) {
9899 return this .collect (clazz , ArrayList ::new );
@@ -101,7 +102,7 @@ default <N> List<N> toList(Class<N> clazz) {
101102 /**
102103 * 收集为{@link HashSet}
103104 *
104- * @return 集合
105+ * @return HashSet 集合
105106 */
106107 default Set <T > toSet () {
107108 return collect (Collectors .toSet ());
@@ -111,7 +112,7 @@ default Set<T> toSet() {
111112 * 收集某属性为set
112113 *
113114 * @param fun 函数
114- * @return {@link Set}<{@link V}>
115+ * @return 属性 HashSet 集合
115116 */
116117 default <V > Set <V > toSet (Function <? super T , ? extends V > fun ) {
117118 return this .collect (fun , HashSet ::new );
@@ -120,8 +121,8 @@ default <V> Set<V> toSet(Function<? super T, ? extends V> fun) {
120121 /**
121122 * 转换类型收集set
122123 *
123- * @param clazz clazz
124- * @return {@link List}<{@link N}>
124+ * @param clazz 类型
125+ * @return 转换 HashSet 集合
125126 */
126127 default <N > Set <N > toSet (Class <N > clazz ) {
127128 return this .collect (clazz , HashSet ::new );
0 commit comments