Java8 Stream sorted

博客介绍了Java8 Stream sorted的相关内容。sorted()可对stream进行自然顺序排序,也能通过传入Comparator实现自定义排序,为Java开发中的排序操作提供了便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java8 Stream sorted

sorted()对stream进行自然顺序排序,或传入Comparator实现自定义的排序

    public static void main(String[] args) {
     	List<String> strings = Arrays.asList("555", "333", "444", "111", "222", "666", null);
     	List<Integer> integers = Arrays.asList(555, 333, 444, 111, 222, 666, null);
     	List<Student> classOneStudents = new ArrayList<>();
	 	List<String> enrolOrders = Arrays.asList("Luis", "Weison", "Jack", "Evan");
	 	classOneStudents.add(Student.builder().age(19).name("Evan").score(80).build());
     	classOneStudents.add(Student.builder().age(18).name("Weison").score(90).build());
     	classOneStudents.add(Student.builder().age(21).name("Luis").score(60).build());
     	classOneStudents.add(Student.builder().age(20).name("Jack").score(70).build());
        
        //1 sorte()d对list<String>进行自然排序
        strings.stream()
                .map(s -> Optional.ofNullable(s).orElseGet(String::new))
                .sorted()
                .forEach(System.out::println);
        System.out.println();
        //2 sorte()d对list<int>进行自然排序
        integers.stream()
                .map(s -> Optional.ofNullable(s).orElse(0))
                .sorted()
                .forEach(System.out::println);
        System.out.println();
        //3 sorte()d对list<Student>进行自然排序
        classOneStudents.stream()
                .map(s -> Optional.ofNullable(s).orElseGet(Student::new))
                .sorted()
                .forEach(System.out::println);
        //4 sorte()d对list<Student>进行自定义排序
        System.out.println();
        classOneStudents.stream()
                .sorted((student1, student2) -> student1.getScore() > student2.getScore() ? 1 : -1)
                .forEach(System.out::println);
        System.out.println();
        //5 按照入学顺序enrolOrders进行展示
        //5.1 生成一个Map<studentName,Student>
        Map<String, Student> collect = classOneStudents.stream()
                .collect(Collectors.toMap(student -> student.getName(), Function.identity(),
                        (student1, student2) -> student2));
        //5.2 按照enrolOrders中的name顺序去Map<studentName,Student>中拿Student,并生成新的List
        enrolOrders.stream()
                .map(enrolOrder->collect.get(enrolOrder))
                .forEach(System.out::println);
    }
### 物联网微信小程序源码示例 #### 基于ESP8266和STM32的物联网设备控制 对于希望开发能够通过微信小程序远程控制基于ESP8266或STM32等微控制器构建的智能设备的应用开发者来说,可以参考一些已有的开源项目来加速自己的研发进程。这些项目通常会提供完整的前端(即微信小程序部分)以及后端服务接口的设计思路和技术细节。 一个典型的例子是由安信可开源团队维护的一个致力于促进国内互联网发展的项目[^1]。该项目不仅实现了用户可以通过微信小程序完成对搭载有ESP8266模块的产品进行配置网络参数、注册至腾讯物联云平台并实施基本操作的功能,而且整个解决方案都是完全开放给社区成员学习交流使用的。 #### WebSocket通信机制集成 考虑到某些应用场景下可能涉及到实时数据传输的需求,在这类应用中引入WebSocket协议作为客户端与服务器间保持持久连接的方式显得尤为重要。有关这方面的实践案例可以在一篇技术博客文章里找到详细的描述[^3]。作者分享了自己是如何利用WebSockets建立从小程序阿里云IoT MQTT Broker之间的稳定通讯链路的经验,并给出了相应的代码片段用于说明具体的实现方法。 以下是简化版的小程序端发起MQTT订阅请求并通过WebSocket接收消息推送功能的核心逻辑: ```javascript // 小程序页面加载完成后初始化WebSocket连接 Page({ onLoad() { const socketTask = wx.connectSocket({ url: 'wss://your-mqtt-broker-endpoint', protocols: ['mqtt'] }); // 处理来自云端的消息事件 socketTask.onMessage((res) => { console.log('Received message:', res.data); this.setData({ receivedMsg: JSON.parse(res.data).payload }); }); // 错误处理 socketTask.onError(function (err) { console.error(err); }); // 关闭时清理资源 socketTask.onClose(() => {}); // 发送登录认证信息 setTimeout(() => { let loginInfo = {/* 认证所需的信息 */} socketTask.send({ data: JSON.stringify(loginInfo)}); }, 500); } }); ``` 此段脚本展示了如何创建一个新的WebSocket实例并向指定的目标地址发送初始握手指令;之后监听`onMessage()`回调函数等待接收由远端发出的数据包;最后还包含了简单的错误日志记录及断开后的善后工作。 #### GitHub上的相关资源推荐 针对想要获取更多关于此类主题的实际编码练习机会的人士而言,GitHub无疑是最好的起点之一。这里列举几个值得探索的方向: - **Aithinker官方提供的ESP8266 Wi-Fi IoT SDK**:虽然不是专门面向微信小程序而设,但是其中包含了许多可以直接借鉴的基础组件和服务框架。 - **WeChat Mini Program Official Repository**:尽管主要关注于界面设计模式而非底层硬件交互方面,但对于理解整体架构非常有用。 - **Open Source Projects on Tencent Cloud GitHub Page**:特别是那些标记为“IoT”的条目往往含有丰富的实战经验总结报告连同配套的教学视频资料一起打包发布出来供大众查阅下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值