龙空技术网

Java8 list求最大值、最小值、平均值、求和、中位数属性排序去重

inkfoxer 56

前言:

如今大家对“java输入数字求最大值”大约比较关心,兄弟们都想要学习一些“java输入数字求最大值”的相关资讯。那么小编同时在网上汇集了一些关于“java输入数字求最大值””的相关文章,希望各位老铁们能喜欢,姐妹们快快来学习一下吧!

在开发中,我们经常需要对list进行各种各样的操作,因此基于以往的开发经历,现将list常用的操作实现出来,供大家参考,具体代码如下方所示:

package com.myfunnel.domain;import java.util.*;import java.util.stream.Collectors;import static java.util.Comparator.comparingLong;import static java.util.stream.Collectors.*;public class UserListTest {    public static void main(String[] args) {        List<User2> list = new ArrayList<>();        list.add(new User2(21L, "张三"));        list.add(new User2(25L, "李四"));        list.add(new User2(22L, "王五"));        list.add(new User2(19L, "赵柳"));        list.add(new User2(32L, "王5"));        list.add(new User2(29L, "王6"));        list.add(new User2(21L, "王7"));        // 对象根据年龄属性升序排序        List<User2> newList = list.stream().sorted(Comparator.comparing(User2::getAge)).collect(toList());        // 对象根据年龄属性降序排序        List<User2> newList1 = list.stream().sorted(Comparator.comparing(User2::getAge).reversed()).collect(toList());        // 标识升序,再按创建日期降序        // List<BhAnnouncement> newList = announcementList.stream().sorted(Comparator.comparing(BhAnnouncement::getReadFlag).thenComparing(BhAnnouncement::getSendTime).reversed()).collect(toList());        // list遍历        newList.forEach(System.out::println);        // 平均数        double asDouble = list.stream().mapToLong(User2::getAge).average().getAsDouble();        System.out.println("average:" + asDouble);        double avg = list.stream().collect(Collectors.averagingLong(User2::getAge));        System.out.println("average:" + avg);        // 最大值        long asLong = list.stream().mapToLong(User2::getAge).max().getAsLong();        System.out.println("max:" + asLong);        // 最小值        long asLong1 = list.stream().mapToLong(User2::getAge).min().getAsLong();        System.out.println("min:" + asLong1);        // 求和        long sum1 = list.stream().mapToLong(User2::getAge).sum();        System.out.println("sum:" + sum1);        // 提取对象属性生成list        List<Long> ids = list.stream().map(User2::getAge).collect(toList());        System.out.println(ids);        // list升序排序        Collections.sort(ids);        System.out.println(ids);        // 生成中位数        Long j;        if (ids.size() % 2 == 0) {            j = (ids.get(ids.size() / 2 - 1) + ids.get(ids.size() / 2)) / 2;            System.out.println("中位数为" + j);        } else {            j = ids.get(ids.size() / 2);            System.out.println("中位数为" + j);        }        // list倒序排序        ids.sort(Comparator.reverseOrder());        System.out.println(ids);        // 去重        List<User2> User2s = list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingLong(User2::getAge))), ArrayList::new));        System.out.println("去重:"+User2s);        /**         * List -> Map         * 需要注意的是:toMap 如果集合对象有重复的key,会报错Duplicate key ....         *  apple1,apple12的id都为1。可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2         */        Map<Long, User2> User2Map = list.stream().collect(Collectors.toMap(User2::getAge, a -> a, (k1, k2) -> k1));        System.out.println(User2Map);        //过滤出符合条件的数据        List<User2> filterList = list.stream().filter(a -> a.getName().equals("李四")).collect(toList());        System.out.println("filterList:" + filterList);        //这段代码的意思是,首先创建一个 List<Integer> 类型的集合对象 list2,它包含了整数值 1、2、3、4、5。        //然后,调用 list2 对象的 stream() 方法,将其转换成一个 Stream 流对象。接着,调用 reduce() 方法,        // 该方法结合 Stream 中的所有元素得到一个新的值。参数 0 是起始值,而参数 (acc, value) -> acc + value 是一个 Lambda 表达式,表示如何合并两个元素的值。其中,acc 是累加器,初始值为起始值 0,而 value 表示 Stream 中的每一个元素,这里的 Lambda 表达式的作用是将累加器和每个元素相加,返回一个新的累加器值。        //最后,将得到的结果打印出来,这里的累加器值正好是整数值 1 到 5 的和,即 15。输出结果为 15。        List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);        int sum = list2.stream().reduce(0, (acc, value) -> acc + value);        System.out.println(sum);        List<Integer> result = list2.stream().filter((value) -> value > 2).collect(toList());        result.forEach(System.out::println);        List<String> result2 = list2.stream().map(value -> String.format("String:%s", value)).collect(toList());        result2.forEach(System.out::println);        // 用于收集统计数据的状态对象,例如count,min,max,sum和平均。        IntSummaryStatistics stats = list2.stream().mapToInt((x) -> x).summaryStatistics();        System.out.println("Max : " + stats.getMax());        System.out.println("Min: " + stats.getMin());        System.out.println("Sun: " + stats.getSum());        System.out.println("Average : " + stats.getAverage());        System.out.println("Count : " + stats.getCount());        System.out.println("toString : " + stats.toString());    }}

标签: #java输入数字求最大值 #java怎么输出最大值 #java的object类型怎么取属性值 #java怎么算平均数 #list比较大小返回最大