java - 查找 50 个最便宜的不匹配价格

标签 java groovy

给定一系列价格(例如 341.95),我如何找到 50 个最便宜的价格?

诀窍是数组中的某些价格可以匹配,并且 50 个价格列表应该是唯一的价格。例如,如果其中有 6 个价格为 123.45,我只想要我的最终 50 个列表中的一个。不能有任何重复。

我认为最好的方法是获取该数组并将其吸入第二个数组,过滤掉任何匹配的数字,但这说起来容易做起来难。

最佳答案

使用 Java 8 流:

int[] lowestPrices = Arrays.stream(prices)
   .sorted()
   .distinct()
   .limit(50)
   .toArray();

请注意,即使您使用“123.45”作为示例,我也使用了 int[]。使用 float 表示货币值是一个糟糕的主意,因此将 123.45 美元表示为 12345 美分。

关于java - 查找 50 个最便宜的不匹配价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44503400/

相关文章:

java - 如何在 JasperReports 中使用 printWhenExpression

java - Grails:java.lang.IllegalArgumentException:没有枚举常量

regex - groovy 正则表达式修饰符...添加注释

gradle - gradle bootRun 执行失败

linux - 当 while/if/etc 出现错误时如何使 bash 脚本失败?

Grails 使用 gstring 访问嵌套字段

java - 自定义 View 'ImageButton' 已调用 setOnTouchListener 但未覆盖 performClick

java - 在 Jython 中公开 Java Map<>,以便其键可通过 Python "dot"运算符使用(属性访问)

java - 设计模式: Partial Object creation of unknown instance members at runtime

Android SDK 无法运行-Windows 7 旗舰版 x64