import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @author InJavaWeTrust
*/
public class TestB {
public static void main(String[] args) {
Apple apple1 = new Apple("红富士", 45, "红", "辽宁", LocalDate.of(2019, 10, 12));
Apple apple2 = new Apple("国光", 60, "绿", "河北", LocalDate.of(2019, 10, 18));
Apple apple3 = new Apple("红星", 50, "红", "山东", LocalDate.of(2019, 9, 10));
Apple apple4 = new Apple("黄元帅", 85, "黄", "山东", LocalDate.of(2019, 10, 6));
Apple apple5 = new Apple("嘎啦", 35, "绿", "山东", LocalDate.of(2019, 8, 21));
Apple apple6 = new Apple("寒富", 40, "红", "辽宁", LocalDate.of(2019, 9, 20));
List<Apple> appleList = new ArrayList<>();
appleList.add(apple1);
appleList.add(apple2);
appleList.add(apple3);
appleList.add(apple4);
appleList.add(apple5);
appleList.add(apple6);
//找出最重的苹果品种
Map<String, Integer> appleVariety = new HashMap<>();
appleList.stream().collect(Collectors.groupingBy(Apple::getVariety))//根据品种分组[品种名称 Apple]
.forEach((k, v) -> appleVariety.put(k, v.stream().collect(Collectors.summingInt(Apple::getWeight))));
Optional<String> appleOpt = appleVariety.keySet().stream().sorted(Comparator.comparing(appleVariety::get).reversed()).limit(1L).findFirst();
if (appleOpt.isPresent()) {
System.out.println("最重的苹果名称:" + appleOpt.get());
}
}
}
结果:
最重的苹果名称:黄元帅
import java.time.LocalDate;
/**
* @author InJavaWeTrust
*/
public class Apple {
private String variety;
private int weight;
private String color;
private String placeOfOrigin;
private LocalDate productionDate;
public Apple() {
}
public Apple(String variety, int weight, String color, String placeOfOrigin, LocalDate productionDate) {
this.variety = variety;
this.weight = weight;
this.color = color;
this.placeOfOrigin = placeOfOrigin;
this.productionDate = productionDate;
}
public String getVariety() {
return variety;
}
public void setVariety(String variety) {
this.variety = variety;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getPlaceOfOrigin() {
return placeOfOrigin;
}
public void setPlaceOfOrigin(String placeOfOrigin) {
this.placeOfOrigin = placeOfOrigin;
}
public LocalDate getProductionDate() {
return productionDate;
}
public void setProductionDate(LocalDate productionDate) {
this.productionDate = productionDate;
}
@Override
public String toString() {
return "Apple ["
+ "variety=" + variety + ", "
+ "weight=" + weight + ", "
+ "color=" + color + ", "
+ "placeOfOrigin=" + placeOfOrigin + ", "
+ "productionDate=" + productionDate +
"]";
}
}