记一次lambda的使用

博客介绍了在业务中使用集合时,利用lambda进行操作的方法。一是去除集合中对象重复属性,只保留属性不同的对象;二是统计集合中拥有相同某个属性的个数。使用lambda能让代码编写更快捷简单。

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

我们在业务中会这样使用集合

查询出来的集合中对象的属性会有一个是重复的 而我们需要的是去除一些重复属性的对象,那么用lambda就会很简单

ArrayList collect = keyRecords.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getMethod()))), ArrayList::new));

这样就去除了重复属性的所有对象 只保留每个属性不同的对象

还有一种情况就实统计 这个集合中拥有相同的某个属性的个数 使用lambda也是很简单
collect = list.stream().collect(Collectors.groupingBy(e -> e.getDate(), Collectors.counting()));
这里返回的集合 但是集合里面的就是每个相同属性的个数,键是e.getDate,值是这个属性一共出现在多少个对象里面

使用lambda能够快捷简单的编写我们的代码

### 使用 `lambda` 表达式定义 Python 排序规则 在 Python 中,可以利用 `lambda` 表达式来动态地定义排序的关键字参数 `key`。这使得可以根据特定条件灵活调整元素的比较方式。 #### 列表排序(指定 key) 当对列表进行排序时,可以通过传递给 `sorted()` 或者 `.sort()` 方法的一个 `key` 参数来控制排序依据的标准[^1]。下面是一个简单的例子: ```python words = ['apple', 'banana', 'cherry'] # 按照字符串长度升序排列 result = sorted(words, key=lambda word: len(word)) print(result) # 输出:['apple', 'cherry', 'banana'] ``` 这段代码展示了如何通过 `lambda` 表达式按字符串长度对单词列表进行排序[^3]。 #### 字典排序(基于值 value) 对于字典类型的对象来说,如果想要按照其内部存储的数据项来进行排序,则同样适用上述方法。这里展示了一个根据字典条目的数值部分进行降序排序的例子: ```python scores = {'Alice': 90, 'Bob': 85, 'Charlie': 76} # 按分数高低顺序打印学生名字 for name in sorted(scores, key=lambda k: scores[k], reverse=True): print(f"{name}: {scores[name]}") ``` 此段程序会先计算各个学生的成绩并将其作为关键字传入到 `sorted()` 函数之中;接着再决定最终输出的名字次序。 #### 嵌套结构体内的复杂排序逻辑 有时候数据可能是更加复杂的嵌套结构体形式存在,比如列表里面包含了多个元组或者是另一个更深层次的对象集合。此时也可以借助于 `lambda` 来实现多级字段上的自定义排序策略: ```python students = [ ('John', 'A', 15), ('Jane', 'B', 12), ('Dave', 'B', 10), ] # 首先按班级等级字母排序,其次年龄从小到大排序 result = sorted(students, key=lambda student: (student[1], student[2])) print(result) ``` 在这个案例里,首先对学生录进行了两次维度上的组合排序——即先考虑学生成绩级别(`student[1]`),之后才是具体岁数(`student[2]`)大小关系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值