groovy - 在嵌套列表中查找最小元素> 在 groovy 中使用收集?
问题描述
我已经编写了以下min
在嵌套中定位元素的示例List<List<String>>
,效果很好:
List<String> el0 = ["112", "2"]
List<String> el1 = ["11", "222", "45", "1"]
List<String> el2 = ["21", "112", "23"]
List<List<String>> container = new ArrayList<>()
container << el0
container << el1
container << el2
List<String> candidates = container.collect { it.min(new Comparator<String>() {
@Override
int compare(String o1, String o2) {
return Integer.valueOf(o1) <=> Integer.valueOf(o2)
}
}) }
String min = candidates.min()
println (min)
但是是否可以对上述相当冗长的示例进行优化/简化 - 假设元素需要是字符串(以及将来更复杂的对象)?
解决方案
一种简化的方法可以在展平后在一次操作中定位最小值container
(最小值减少只进行一次)。它看起来像:
String min = container.flatten().min{Integer.valueOf(it)}
可以看出,我还使用{Integer.valueOf(it)}
闭包来实现Comparator<String>
,您使用匿名类来实现。
推荐阅读
- php - FPDF 中的一页上有多个图像
- c# - 使用 ManagementObjects 更改 IP 地址:不正确的 IP 地址/锁定问题?
- javascript - 正则表达式的路径引发 TypeError:无法读取未定义的属性“长度”
- ios - iOS Contacts Framework - 如何保存/创建新的联系人存储
- arrays - 在 Matlab 中,当使用矩阵数学存储在 3D 数组中时,如何有效地将具有 1D 系数集的操作应用于图像的每种颜色?
- python - 翻译文本变量,然后将其放在 tkinter 标签中
- kubernetes - 在 kubernetes 中运行时,docker api 未显示 memoryReservation 值
- python - 有没有在 python 中使用 mod "%" 的替代方法
- shiny - 如何使滑块输入“惰性”并仅在需要时刷新
- python - Keras 中的自动编码器具有低验证损失,但重建只是噪音