首页 > 编程语言 >Java Stream 8 API

Java Stream 8 API

时间:2024-06-23 16:22:17浏览次数:3  
标签:java Stream get util Person API import Java attributes

动态多字段排序

动态多字段排序

假设我们有一个 Person 类,希望能够按照 agename 进行动态排序。我们使用上述代码生成一个组合比较器来完成多字段排序。

1. 定义 Person

java import java.util.HashMap; import java.util.Map; public class Person { private Map<String, Comparable<?>> attributes = new HashMap<>(); public Person(String name, int age, double salary) { attributes.put("name", name); attributes.put("age", age); attributes.put("salary", salary); } public Comparable<?> get(String attributeName) { return attributes.get(attributeName); } @Override public String toString() { return "Person{name=" + attributes.get("name") + ", age=" + attributes.get("age") + ", salary=" + attributes.get("salary") + '}'; } }

2. 使用 StreamComparator 进行动态排序

java import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.stream.Stream; import java.util.stream.Collectors; public class DynamicSortingExample { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", 30, 70000), new Person("Bob", 25, 60000), new Person("Charlie", 35, 80000), new Person("David", 30, 75000) ); // 定义要排序的列 List<String> columns = Arrays.asList("age", "name"); // 生成组合比较器 Optional<Comparator<Person>> combinedComparator = columns.stream() .map(column -> Comparator.comparing((Person p) -> p.get(column), Comparator.naturalOrder())) .reduce(Comparator::thenComparing); // 使用组合比较器进行排序 if (combinedComparator.isPresent()) { List<Person> sortedPeople = people.stream() .sorted(combinedComparator.get()) .collect(Collectors.toList()); sortedPeople.forEach(System.out::println); } } }

 

 

BiConsumer

Function

Turple

Triple

 

标签:java,Stream,get,util,Person,API,import,Java,attributes
From: https://www.cnblogs.com/spicy-food/p/18263548

相关文章

  • vscode开发纯java项目兼容eclipse
    最近想使用vscode作为开发工具逐步替代eclipse,但是不影响eclipse作为项目管理的配置。以下是踩坑过程:1、项目之间的依赖。如主projectA依赖projectB,projectB并不是已jar包的形式,而是项目的形式在eclipse中的,eclipse有个很方便的功能是直接把项目添加进依赖中,vscode貌似找不到直接......
  • 深入探索 Nuxt3 Composables:掌握目录架构与内置API的高效应用
    title:深入探索Nuxt3Composables:掌握目录架构与内置API的高效应用date:2024/6/23updated:2024/6/23author:cmdragonexcerpt:摘要:“本文深入探讨了Nuxt3Composables,重点介绍了其目录架构和内置API的高效应用。通过学习本文,读者将能够更好地理解和利用Nuxt3Co......
  • 深入探索 Nuxt3 Composables:掌握目录架构与内置API的高效应用
    title:深入探索Nuxt3Composables:掌握目录架构与内置API的高效应用date:2024/6/23updated:2024/6/23author:cmdragonexcerpt:摘要:“本文深入探讨了Nuxt3Composables,重点介绍了其目录架构和内置API的高效应用。通过学习本文,读者将能够更好地理解和利用Nuxt3Composab......
  • Java基础面试题下
    #Java基础面试题(下)>lecture:波哥#一、String相关面试题##1.为什么String在java中是不可变的?-如果不是不可变的:这种情况根本不可能,因为在字符串池的情况下,一个字符串对象/文字,例如“Test”已被许多参考变量引用,因此如果其中任何一个更改了值,其他参数将自动受到影......
  • 国际邮政EMS计算邮费API接口
    1.简介这个接口可以直接用来计算国际邮政物流费用,我是在在做微信小程序时需要这个功能才自己找到了这个接口。2.需要的参数:前三个参数是你发货地的省市区的邮政编码地址,在微信小程序中可以用回调函数来获取,在java或其他语言中也应该有库来获取。'aACode'这个参数是,你发货......
  • 1.4Java 基本数据类型
    变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。Java的两大数据类型:内置数据类型引用......
  • 【JavaScript脚本宇宙】编写可靠代码:探索最佳JavaScript类型检查解决方案
    掌握类型安全:选择适合您的JavaScript类型检查工具前言JavaScript作为一种动态类型语言,在大型项目的开发中常常会遇到类型错误和难以调试的问题。为了解决这些问题,出现了各种类型的JavaScript类型检查工具。这些工具能够帮助开发人员在代码编写过程中及时发现潜在的类型错......
  • 探索Java正则表达式的奥秘:源码之旅与高级应用
    1.引言在Java编程中,正则表达式(RegularExpression,简称Regex)是一个强大的工具,用于处理字符串匹配、查找和替换等任务。Java提供了java.util.regex包来支持正则表达式的功能。对于Java工程师来说,理解其背后的工作原理和源码实现,可以进一步掌握其性能特性和最佳实践。2.ja......
  • 深探Java线程池协同神器——CountDownLatch的源码奥秘与实战应用
    1.概述CountDownLatch,作为Java并发包java.util.concurrent下的重要一员,其设计理念在于提供一个线程同步工具,允许一个或多个线程等待其他线程完成操作后再继续执行。在工程师的眼中,它不仅是多线程编程中的一把利器,更是实现线程间高效协同的关键所在。2.源码分析构造函......
  • Java中word文档操作:把图片和文字插入word文档中!!!
    达到的效果:把服务器上的图片插入word文档中,并且生成一个word文件。其他包括:文字换行、图片大小适应一个word文档页等。直接上代码:<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>imp......