下面是一个示例代码,展示了如何按子类型分组的流:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
class Animal {
private String name;
private String type;
public Animal(String name, String type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public String getType() {
return type;
}
}
public class Main {
public static void main(String[] args) {
List animals = Arrays.asList(
new Animal("Cat", "Mammal"),
new Animal("Dog", "Mammal"),
new Animal("Eagle", "Bird"),
new Animal("Shark", "Fish"),
new Animal("Lion", "Mammal"),
new Animal("Tiger", "Mammal"),
new Animal("Sparrow", "Bird"),
new Animal("Salmon", "Fish")
);
Map> groupedAnimals = animals.stream()
.collect(Collectors.groupingBy(Animal::getType));
System.out.println(groupedAnimals);
}
}
在上面的示例中,我们定义了一个Animal类,它有两个属性:name和type。我们创建了一个包含不同类型动物的列表。
然后,我们使用Java 8的流操作将动物列表按照类型进行分组。我们使用Collectors.groupingBy
方法,传入一个分类函数Animal::getType
,它根据动物的类型进行分类。
最后,我们将分组后的结果打印出来。输出结果如下:
{Fish=[Shark, Salmon], Mammal=[Cat, Dog, Lion, Tiger], Bird=[Eagle, Sparrow]}
这样,我们就将动物列表按照类型进行了分组。
上一篇:按子聚合结果升序排序
下一篇:按子类型将Java对象分组