java8 list統計(求和、最大、最小、平均)

list.stream().mapToDouble(User::getHeight).sum()//
list.stream().mapToDouble(User::getHeight).max()//最大
list.stream().mapToDouble(User::getHeight).min()//最小
list.stream().mapToDouble(User::getHeight).average()//平均值

固然,除了統計double類型,還有int和longdom

bigdecimal須要用到reduce求和ide

 

Double示例:this

public class HelloWorld { private static final DecimalFormat df = new DecimalFormat("0.00");//保留兩位小數點
    public static void main(String[] args) { Random random = new Random(); List<User> list = new ArrayList<>(); for(int i=1;i<=5;i++) { double weight = random.nextDouble() * 100 + 100;//隨機身高:100-200
            User u = new User(i, "用戶-" + i, weight); list.add(u); } System.out.println("用戶:" + list); double sum = list.stream().mapToDouble(User::getHeight).sum(); System.out.println("身高 總和:" + df.format(sum)); double max = list.stream().mapToDouble(User::getHeight).max().getAsDouble(); System.out.println("身高 最大:" + df.format(max)); double min = list.stream().mapToDouble(User::getHeight).min().getAsDouble(); System.out.println("身高 最小:" + df.format(min)); double average = list.stream().mapToDouble(User::getHeight).average().getAsDouble(); System.out.println("身高 平均:" + df.format(average)); } private static class User{ Integer id; String name; double height;//身高

        public User(Integer id, String name, double height) { this.id = id; this.name = name; this.height = height; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } @Override public String toString() { return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", height=" + height +
                    '}'; } } }

執行結果:spa

用戶:
[User{id=1, name='用戶-1', height=192.15677342306662},
User{id=2, name='用戶-2', height=196.35056058694772},
User{id=3, name='用戶-3', height=101.96271958293853},
User{id=4, name='用戶-4', height=110.83134063008366},
User{id=5, name='用戶-5', height=106.27720636757154}] 身高 總和:707.58 身高 最大:196.35 身高 最小:101.96 身高 平均:141.52

 

BigDecimal示例:code

public class HelloWorld { private static final DecimalFormat df = new DecimalFormat("0.00");//保留兩位小數點
    public static void main(String[] args) { Random random = new Random(); List<User> list = new ArrayList<>(); for(int i=1;i<=5;i++) { double weight = random.nextDouble() * 100 + 100;//隨機身高:100-200
            list.add(new User(i, new BigDecimal(weight).setScale(BigDecimal.ROUND_HALF_UP, 2))); } System.out.println("list:" + list); BigDecimal add = list.stream().map(User::getHeight).reduce(BigDecimal.ZERO, BigDecimal::add); System.out.println("身高 總和:" + df.format(add)); Optional<User> max = list.stream().max((u1, u2) -> u1.getHeight().compareTo(u2.getHeight())); System.out.println("身高 最大:" + df.format(max.get().getHeight())); Optional<User> min = list.stream().min((u1, u2) -> u1.getHeight().compareTo(u2.getHeight())); System.out.println("身高 最小:" + df.format(min.get().getHeight())); } private static class User{ Integer id; BigDecimal height;//身高

        public User(Integer id, BigDecimal height) { this.id = id; this.height = height; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public BigDecimal getHeight() { return height; } public void setHeight(BigDecimal height) { this.height = height; } @Override public String toString() { return "User{" +
                    "id=" + id +
                    ", height=" + height +
                    '}'; } } }

執行結果:orm

list:
[User{id=1, height=141.5472},
    User{id=2, height=133.1609},
    User{id=3, height=101.5403},
    User{id=4, height=157.8470},
    User{id=5, height=177.7596}] 身高 總和:711.8550 身高 最大:177.76 身高 最小:101.54
相關文章
相關標籤/搜索