【常用方法】JDK1.8 分组-求和-去重-排序 持续更新

JDK1.8收集方法

根据集合某个字段求sum
 IntSummaryStatistics caramsCollect = caramsList.stream().collect(Collectors.summarizingInt(map ->
 Integer.parseInt(StringTool.toString(map.get("count")))));
计算 数量
int sum = appleList.stream().mapToInt(Apple::getNum).sum();
//计算 总金额
BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
分组求和
  Map<String, LongSummaryStatistics> sum = caramsList.stream().collect(
                   Collectors.groupingBy(ReportMonthBasicResourceData::getInsertMonth,
                   Collectors.summarizingLong(ReportMonthBasicResourceData::getInsertCount)));
条件求个数
long count = list.stream().filter(person -> (person.getAge() > 19)).count();
根据某个字段得到新的集合
 List<Document> thrList = list.stream().filter(data -> !StringTool.toString(data.get("eventType")).equals(SnapAlarmConstant.SMSR_ALARM_FACE)).collect(Collectors.toList());
根据逗号拼接
 String typeStr = typeList.stream().map(str->"'"+str+"'").collect(Collectors.joining(","));
根据某个字段分组
 Map<String, Long> sum = cars.stream().collect(
                Collectors.groupingBy(Car::getName, Collectors.counting()));
集合操作成map
 Map<String, Long> dataMap = faceList.stream()
                .collect(Collectors.toMap(alarmMap -> StringTool.toString(alarmMap.get("date")), alarmMap -> Long.parseLong(StringTool.toString(alarmMap.get("count")))));
去重
  List<Map<String,Object>> devicePersonList = deviceList.stream().distinct().collect(Collectors.toList());
根据某个字段去重
   List<PersonnelControlVo> distinctPersonInfos =personInfos.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PersonnelControlVo :: getFaceId))), ArrayList::new));
得到某个字段的集合,再根据条件筛选
  List<List<Double>> featureList = pictures.stream().map(Picture::getFeatures).filter(item -> !CollectionUtils.isEmpty(item)).collect(Collectors.toList());
排序
  resultList.sort(Comparator.comparing(AirportChannelVo::getId).reversed());
集合根据某个字段去重
 List<PersonnelControlVo> objRelationList = personInfos.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PersonnelControlVo::getFaceId))), ArrayList::new));
集合转数组
方式一:
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
String[] strings = list.stream().toArray(String[]::new);
 
方式二、
List<String> list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("c");
String[] strin = list2.toArray(new String[list2.size()]);
map转list 并且排序
List<ComprehensiveDeviceVo> resultDataList = dataMap.entrySet().stream()
                .map(e -> ComprehensiveDeviceVo.builder().count(e.getValue()).deviceId(e.getKey()).build())
                .sorted(Comparator.comparing(ComprehensiveDeviceVo::getCount).reversed())
                .collect(Collectors.toList());

流式处理分割集合


      //方法二:获取分割后的集合
      List<List<Integer>> splitList = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> list.stream().skip(a * MAX_NUMBER).limit(MAX_NUMBER).parallel().collect(Collectors.toList())).collect(Collectors.toList());
      
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JDK1.8是Java开发工具包的一个版本,也叫Java SE 8。它包含了Java编译器、虚拟机、类库和相关工具等组成部分。相对于较老的版本,JDK1.8相对增加了许多新特性和改进,让Java编程更加灵活、高效和安全。 JDK1.8中的新特性包括Lambda表达式、Stream API、接口默认方法、新的日期和时间API等等。Lambda表达式允许开发者以更简洁、易读的方式处理集合数据,提高开发效率。Stream API则提供了在集合上进行功能性编程的能力,能够以更简单、流畅的方式处理数据。接口默认方法则简化了接口的实现,减少了代码的重复。新的日期和时间API还解决了在较老版本中日期时间的一些问题,提供了更好的日期和时间处理方式。 JDK1.8中还包含了一些安全性改进,例如对于网络传输和数据加密的支持等等。开发者可以使用更安全的方式处理数据,防止数据泄漏和攻击等问题。 总的来说,JDK1.8提供了许多新特性和改进,方便了Java开发者进行开发,并且增强了Java应用程序的灵活性、高效性和安全性。 ### 回答2: JDK 1.8是Java Development Kit的一个版本,是Java语言的一个开发工具包。它也被称为Java SE 8。 JDK 1.8相对于之前的版本,有很多重要的改进和新增功能,例如: 1. Lambda表达式:Lambda表达式是一个匿名函数,可以使得Java代码更加简洁易懂。使用Lambda表达式可以使得代码更加模块化,可以有效地减少重复代码。 2. Stream API:Stream API是一组新功能,可以帮助我们更方便地处理集合和数组等数据结构。Stream API提供了丰富的方法,可以让我们直接对数据进行转换、筛选、排序等操作。 3. 新的时间日期API:JDK 1.8引入了新的时间日期API,为Java处理时间和日期问题提供了更好的支持。新的时间日期API提供了更加清晰和易用的API,可以有效地避免旧的Date和Calendar类的一些问题。 4. 接口的默认方法:在JDK 1.8中,我们可以为接口添加默认的方法实现。这使得接口能够包含一些通用的方法实现,从而让使用接口的代码更加简单。 总之,JDK 1.8为Java开发者提供了更多的工具和技术,使得Java程序员可以更快速、更方便地进行开发。 ### 回答3: JDK1.8是Java Development Kit的简称,是Java语言的一种开发工具集。该版本于2014年发布,为Java 8版本,带来了许多新的特性和改进,如Lambda表达式、Stream API、方法引用、默认与静态方法接口、Date/Time API等。这些新特性大大提高了Java语言的效率和易用性,同时也激发了Java开发者的创造力与潜力,为Java开发带来了更多的可能性。JDK 1.8版本的发布也为Java应用程序和云计算带来了更大的优势,加强了Java在大数据分析、互联网应用、移动应用、嵌入式系统等领域的发展。总的来说,JDK 1.8版本是Java历史上的一个重要里程碑,在为Java开发者提供更多便捷和全面的工具之余,也为Java语言本身注入了更多的活力和生机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值