Java 写一个把list列表中根据某一字段分组不同的list列表方法
时间: 2024-09-13 14:09:16 浏览: 44
在Java中,可以使用Stream API来实现根据某一字段对List中的元素进行分组,并将分组结果存储到新的List列表中。下面是一个示例方法,它使用Java 8及以上版本的Stream API来完成这个任务:
```java
import java.util.*;
import java.util.stream.*;
public class ListGrouping {
public static <T, K> List<List<T>> groupListByField(List<T> list, Function<T, K> classifier) {
return list.stream()
.collect(Collectors.groupingBy(classifier))
.values()
.stream()
.collect(Collectors.toList());
}
public static void main(String[] args) {
// 示例使用
List<String> items = Arrays.asList("apple", "banana", "avocado", "orange", "banana", "apple");
List<List<String>> groupedItems = groupListByField(items, item -> item.charAt(0));
// 打印分组结果
groupedItems.forEach(System.out::println);
}
}
```
在这个例子中,`groupListByField`方法接受一个泛型的List和一个分类函数(classifier),分类函数用于定义基于哪个字段进行分组。在`main`方法中,我们创建了一个简单的String类型的List,然后通过第一个字符进行分组。
输出结果将基于字符串首字母分组的子List列表,例如,所有以'a'开头的元素在一个子List中,所有以'b'开头的元素在另一个子List中,依此类推。
阅读全文