加入现在有一个实体类A,字段有颜色和尺寸,每个颜色对应多个尺寸,然后一个集合中有多个A,怎么用java8特性区分出每个颜色所包含尺寸的数量
时间: 2024-05-05 22:15:43 浏览: 72
可以使用Java 8中的Stream API和Collectors.groupingBy()方法进行操作,具体代码如下:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class A {
private String color;
private String size;
public A(String color, String size) {
this.color = color;
this.size = size;
}
public String getColor() {
return color;
}
public String getSize() {
return size;
}
public static void main(String[] args) {
List<A> list = new ArrayList<>();
list.add(new A("red", "S"));
list.add(new A("red", "M"));
list.add(new A("red", "L"));
list.add(new A("blue", "S"));
list.add(new A("blue", "M"));
Map<String, Long> countByColor = list.stream()
.collect(Collectors.groupingBy(A::getColor, Collectors.counting()));
Map<String, List<String>> sizeByColor = list.stream()
.collect(Collectors.groupingBy(A::getColor, Collectors.mapping(A::getSize, Collectors.toList())));
System.out.println("Count by color: " + countByColor);
System.out.println("Size by color: " + sizeByColor);
}
}
```
上面的代码中,首先创建了一个包含多个A对象的List集合,然后使用Stream API和Collectors.groupingBy()方法对集合进行分组操作。其中,countByColor用于统计每个颜色出现的次数,sizeByColor用于统计每个颜色所包含的尺寸列表。
运行上面的代码,输出结果如下:
```
Count by color: {blue=2, red=3}
Size by color: {blue=[S, M], red=[S, M, L]}
```
可以看到,输出结果成功地区分出了每个颜色所包含的尺寸数量。
阅读全文