码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Stream】Java中List<Object>,List<~> 使用Stream函数式


    文章目录

    • EXP List 转List
      • 场景一 Object是已知对象,单纯去某一个成员变量为List<~>
      • 场景二 Object其实String,但是强转感觉很LOW
    • List中使用stream() 实现大小写转换
      • 场景一 Object其实是String
      • 场景二 Object是对象
    • List 转Map

      EXP List 转List

      场景一 Object是已知对象,单纯去某一个成员变量为List<~>

      public class Main {
      	public static void main(String[] args) {
      		List<Person> list = new ArrayList<>();
      		list.add(new Person("张三", 1));
      		list.add(new Person("李四", 2));
      		// 这里只需要id
      		List<Long> ids = list.stream().map(Person::getId()).collect(Collectors.toList());
      		
      	}
      	@Data
      	class Person {
      		private String name;
      		private Long id;
      
      		public Person(String name, String id) {
      			this.name = name;
      			this.id = id;
      		}
      		
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21

      场景二 Object其实String,但是强转感觉很LOW

      public class Main {
      	public static void main(String[] args) {
      		List<Object> list = new ArrayList<>();
      		list.add("A");
      		list.add("B");
      		List<String> collect = list.stream().map(String::valueOf()).collect(Collectors.toList());
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      List中使用stream() 实现大小写转换

      场景一 Object其实是String

      public class Main {
      	public static void main(String[] args) {
      		List<Object> list = new ArrayList<>();
      		list.add("A");
      		list.add("B");
      		List<String> collect = list.stream().map(item -> String.valueOf(item).toLowerCase(Locale.ROOT)).collect(Collectors.toList());
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      场景二 Object是对象

      public class Main {
      	public static void main(String[] args) {
      		List<Person> list = new ArrayList<>();
      		list.add(new Person("A", 1));
      		list.add(new Person("B", 2));
      		// 这里只需要id
      		List<String> names = list.stream().map(item -> item.getName().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
      		
      	}
      	@Data
      	class Person {
      		private String name;
      		private Long id;
      
      		public Person(String name, String id) {
      			this.name = name;
      			this.id = id;
      		}
      		
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21

      List 转Map

      // 首先定义一个User类,我们用主键ID作为key,然后value就是当前对象
      // 举一反三
      List<User> users = new ArrayList<>();
      Map<String, User> usersMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));
      
      • 1
      • 2
      • 3
      • 4
    • 相关阅读:
      JavaScipt设计模式初探-代理模式(三) 虚拟代理
      网页设计与制作项目三“网上花店”
      人工智能基础_机器学习044_使用逻辑回归模型计算逻辑回归概率_以及_逻辑回归代码实现与手动计算概率对比---人工智能工作笔记0084
      HandlerThread源码理解
      NAT+ACL+mstp小综合
      QT编程时如何开启c++11?其他IDE如何开启C++11?
      安装spark并配置高可用
      对你的第一个推荐计划的期望
      根据消息信息如何快速定位程序
      双周赛114(模拟、枚举 + 哈希、DFS)
    • 原文地址:https://blog.csdn.net/weixin_44922964/article/details/127671872
      • 最新文章
      • 沪漂五周年了:我越来越迷茫了
        Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
        MySQL-Seconds_behind_master的精度误差
        [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
        AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
        Agent OS :五种驯服不确定性的范式
        PortSwigger SQL注入LAB11
        数据库即时编译JIT
        [Begin]AI Learn Data Day 0
        深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      小工具 小游戏
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

      京公网安备 11010502049817号