List<Map<String, Object>> cats = new ArrayList<>();
Map<String,Object> cat1 = new HashMap<>();
cat1.put("name", "cat1");
cat1.put("age", 10);
cats.add(cat1);
Map<String,Object> cat2 = new HashMap<>();
cat2.put("name", "cat2");
cat2.put("age", 2);
cats.add(cat2);
List<Map<String, Object>> sortedCats = cats.stream().sorted((map1, map2) -> {
int age1 = (int) map1.getOrDefault("age", 0);
int age2 = (int) map2.getOrDefault("age", 0);
return age1 - age2;
}).collect(Collectors.toList());
sortedCats.forEach(System.out::println);
对集合数据的统计,是开发中常用的功能,掌握好Java Stream提供的方法,避免自己写代码统计,可以提高工作效率。先造点数据:pigs.add(new Pig(1, "猪爸爸", 31, "M", false));pigs.add(new Pig(2, "猪妈妈", 28, "F", true));pigs.add(new Pig(3, "乔治", 2, "M", false));pigs.add(new Pig(4, "佩奇", 5, "F", false));一、统计个数用Stream
list.stream().mapToDouble(User::getHeight).sum()//和
list.stream().mapToDouble(User::getHeight).max()//最大
list.stream().mapToDouble(User::getH...
Integer sum = list.stream().mapToInt(User::getAge).sum();
System.out.println("年龄总和:" +sum);
Integer max = list.stream().mapToInt(User::getAge).max().orElse(0);
System.out.println("年龄 最大:" + max);
Integer mi
Integer[] integerArray = {1, 3, 5, 10, 18};
List<Integer> list = new ArrayList<>(Arrays.asList(integerArray));
IntSummaryStatistics summaryStatistics = list.stream().mapToInt((s) -> s).su...
public class Student {
private int mathScoresInt; //数学成绩
private long mathScoresLong;//数学成绩
private float mathScoresFloat;//数学成绩
private double mathScoresDouble;//数学成绩
private BigDecimal mathScoresBigDecimal;//数学成绩
//构造方法忽略
数值类型求和
ArrayList<Double> sumAmountResult = new ArrayList<Double>();
sumAmountResult.add(111d);
sumAmountResult.add(222d);
sumAmountResult.add(333d);
sumAmountResult.add(444d);
double sumChildAmountResult = sumAmountResult.stream().mapToDouble(D
java8的stream是一个非常强大的功能,今天遇到List求和,如果Object是个对象,你可以这么写????:
int sum = list.stream().mapToLong(User::getAge).sum();
如果你是List,你可以这么写????:
int sum = list.stream().reduce(Integer::sum).orElse(0);
但如果你是List,而object又是Integer,你可以这样????:
Integer o = inventorys.st
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int max = numbers.stream()
.max(Integer::compareTo)
.orElseThrow(); // 如果集合为空,则抛出异常
System.out.println("最大值:" + max);
int min = numbers.stream()
.min(Integer::compareTo)
.orElseThrow(); // 如果集合为空,则抛出异常
System.out.println("最小值:" + min);
在上述示例中,我们创建了一个包含整数的List集合。然后使用Stream流的`max()`方法和`min()`方法,传入`Integer::compareTo`作为比较器,来获取最大值和最小值。使用`orElseThrow()`方法可以在集合为空时抛出异常,你也可以选择使用`orElse()`方法来提供一个默认值。
运行上述代码,输出将会是:
最大值:5
最小值:1
这样就得到了List集合的最大值和最小值。希望对你有帮助!如果还有其他问题,请继续提问。