【发布时间】:2020-09-15 12:29:51
【问题描述】:
我有一个ArrayList,其中保留了 20 个值,这 20 个值按日期顺序打印出来(1 个是最新的)我想在此列表中找到 8 个最低值,然后在打印输出中突出显示它们。
我在应用程序的其他部分使用 Collection.sort() 来查找 8 个最低值,但这会重新排列顺序,因此我无法按日期顺序突出显示它们。
有没有办法在不改变它们的顺序的情况下找到ArrayList 中的 8 个最低值?
为了澄清,最终目标是按输入顺序在页面上显示所有 20 个值。所以这些没有编号顺序。即它们可以是6,3,9,8,9,9,10,4 等。当显示时,我希望突出显示最低的 8 个值,因此对于上述数字,如果我希望突出显示最低的 3,它将是
"6"
"3"
9
"8"
9
9
10
"4"
引号中的数字被突出显示但留在打印输出的相同位置。
目前在我的display() 中,我使用s1.setText(masterlist.get(0) 等,所以我需要能够找到最低的8 个,然后对于这8 个使用s1.setBackgroundColor(Color.GREEN)
【问题讨论】:
-
你可以复制 ArrayList。
-
对原始 ArrayList 的副本进行排序。然后,您可以在打印原始列表时从那里获取有关 8 个最低值的信息。
-
originalList.stream().sorted().limit(8).collect(toList()). -
如果他们已经“按日期顺序”,你不能用
originalList.subList(...)吗? -
@AndyTurner 我想找到 8 个最低值。因此,如果例如值范围为 2 - 9 但不是按升序排列,我想找到最低的 8 个值,然后突出显示这些值,但保持它们按日期顺序排列....所以第 2、第 8、第 10 等可能是最低的并突出显示。