• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java8实现list集合中按照某一个值相加求和,平均值等操作代码

java 搞代码 4年前 (2022-01-09) 36次浏览 已收录 0个评论

集合:

List<User> user = new User();

user .stream().collect(Collectors.summingInt(User::getAge))

参数类型:

summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值

summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值

summarizingLong 统计数据(long)状态, 其中包括count min max sum和平均值.

summingInt 求和 返回int类型

summingDouble 求和 返回double类型

summingLong 求和 返回long类型

counting 返回Stream的元素个数

averagingDouble 求平均值 返回double类型

averagingInt 求平均值 返回int类型

averagingLong 求平均值 返回long类型

maxBy 在指定条件下,返回最大值

minBy 在指定条件下,返回最小值

补充知识:Java8集合List排序、筛选、求和、求最大值、平均值、List转Map

Java8集合List排序、筛选

1. List

元素有序

元素可重复

1.1 ArrayList

动态数组实现

查询快

增删慢(末尾处来源gaodaimacom搞#^代%!码网也快)

1.2 LinkedList

链表实现

查询慢

增删快

1.3 ArrayList和LinkedList比较

实现 查询 增删 线程安全?
ArrayList 动态数组 慢(末尾处也快) 不安全
LinkedList 链表 不安全

ArrayList:

它的默认初始化容量是10,每次扩容时候增加原先容量的一半,也就是变为原来的1.5倍。

LinkedList:

底层实现是双向链表。

在增加和删除元素时效率较高。

1.4 List过滤指定元素

1.4.1 准备待测试的List

public class Message {
  private Long id;  //id

  private String msg; //消息

  private Date sendTime; //时间戳
  //省略get set
}
//返回一个List
private static List<Message> getMessageList(){
    List<Message> list = new ArrayList<>();
    list.add(new Message(1L, "a", new Date()));
    list.add(new Message(2L, "b", new Date()));
    list.add(new Message(4L, "b", new Date()));
    list.add(new Message(3L, "c", new Date()));
    return list;
  }

1.4.2 使用Iterator遍历List

 private static void TestArrayList(){
    List<Message> list = getMessageList();
    System.out.print("删除前:");
    list.stream().forEach(item -> System.out.print(item));

    Iterator<Message> it = list.iterator();
    while (it.hasNext()) {
      Message s = it.next();
      if (s.getMsg().equals("b")) {
        it.remove();
      }
    }

    System.out.print("\n删除后:");
    list.stream().forEach(item -> System.out.print(item));
}

1.4.2 使用Java8对List过滤筛选

private static void filterList(){
  List<Message> list1 = getMessageList();
  //过滤所有msg是b的记录
  List<Message> list2 = list1.stream().filter(s -> !s.getMsg().equals("b")).collect(Collectors.toList());
  list2.stream().forEach(item -> System.out.println(item));
}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java8实现list集合中按照某一个值相加求和,平均值等操作代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址