arroyo
1. Método de tipo de objeto ordinario
aplicaciones.java
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("apps")
public class Apps implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String appName;
private String url;
private String country;
public Apps(Integer id, String appName) {
this.id = id;
this.appName = appName;
}
}
código principal
public static void main(String[] args) {
// 含普通类型的对象
ArrayList<Apps> list = new ArrayList<>();
list.add(new Apps(1, "魅言倾馨"));
list.add(new Apps(2, "子非我鱼"));
list.add(new Apps(3, "冷言"));
list.add(new Apps(4, "浅语"));
int sum = list.stream().mapToInt(Apps::getId).sum(); // 求和
int max = list.stream().mapToInt(Apps::getId).max().getAsInt();// 求最大
int min = list.stream().mapToInt(Apps::getId).min().getAsInt();// 求最小
double avg = list.stream().mapToInt(Apps::getId).average().getAsDouble();// 求平均
System.out.println("和:"+sum);
System.out.println("最大:"+max);
System.out.println("最小:"+min);
System.out.println("平均:"+avg);
}
Resultados de:
2. Método de doble tipo
Aquí no solo se puede usar double, sino también int y long.
código principal
public static void main(String[] args) {
// double类型
ArrayList<Double> list2 = new ArrayList<>();
list2.add(23.1);
list2.add(42.2);
list2.add(63.3);
list2.add(53.4);
double sum2 = list2.stream().mapToDouble(Double::doubleValue).sum(); // 求和
double max2 = list2.stream().mapToDouble(Double::doubleValue).max().getAsDouble();// 求最大
double min2 = list2.stream().mapToDouble(Double::doubleValue).min().getAsDouble();// 求最小
double avg2 = list2.stream().mapToDouble(Double::doubleValue).average().getAsDouble();// 求平均
System.out.println("和:"+sum2);
System.out.println("最大:"+max2);
System.out.println("最小:"+min2);
System.out.println("平均:"+avg2);
}
Resultados de:
3. Contiene un método de objeto de tipo BigDecimal.
myqxin.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Myqxin {
private String id;
private BigDecimal age;
}
código principal
public static void main(String[] args) {
// 含BigDecimal类型的对象
ArrayList<Myqxin> list3 = new ArrayList<>();
list3.add(new Myqxin("1", new BigDecimal("34")));
list3.add(new Myqxin("2", new BigDecimal("52")));
list3.add(new Myqxin("3", new BigDecimal("13")));
list3.add(new Myqxin("4", new BigDecimal("62")));
list3.add(new Myqxin("5", new BigDecimal("81")));
BigDecimal sum3 = list3.stream().map(Myqxin::getAge).reduce(BigDecimal.ZERO, BigDecimal::add); // 求和
BigDecimal max3 = list3.stream().max((u1, u2) -> u1.getAge().compareTo(u2.getAge())).get().getAge(); // 最大
BigDecimal min3 = list3.stream().min((u1, u2) -> u1.getAge().compareTo(u2.getAge())).get().getAge(); // 最小
System.out.println("和:" + sum3);
System.out.println("最大:" + max3);
System.out.println("最小:" + min3);
}
Resultados de:
4. Método de tipo BigDecimal
código principal
public static void main(String[] args) {
// BigDecimal类型
ArrayList<BigDecimal> list4 = new ArrayList<>();
list4.add(new BigDecimal("34"));
list4.add(new BigDecimal("14"));
list4.add(new BigDecimal("63"));
list4.add(new BigDecimal("93"));
double sum4 = list4.stream().mapToDouble(BigDecimal::doubleValue).sum();// 求和
double max4 = list4.stream().mapToDouble(BigDecimal::doubleValue).max().getAsDouble();// 求最大
double min4 = list4.stream().mapToDouble(BigDecimal::doubleValue).min().getAsDouble();// 求最小
double avg4 = list4.stream().mapToDouble(BigDecimal::doubleValue).average().getAsDouble();// 求平均
System.out.println("和:" + sum4);
System.out.println("最大:" + max4);
System.out.println("最小:" + min4);
System.out.println("平均:" + avg4);
}
Resultados de: