【问题标题】:ArrayList Sorting Based on Method基于方法的ArrayList排序
【发布时间】:2016-11-19 01:01:44
【问题描述】:

我需要一些帮助来比较 2 arraylist 然后排序;如果我走在正确的轨道上。所以这是我的问题..

假设arraylist 1 包含其中3 整数加起来为4 的对象,并且每个整数必须至少大于或大于/等于下一个数字。

例如,arraylist 1 包含 {(2,1,1), (2,2,0), (3,1,0), (4,0,0)}.

每个对象的整数也是从大到小排序的。

现在我有一个 (2,1,1) 并将其发送到一个方法以对其执行算法。对于每个整数位,我需要将 2 添加到该整数位,然后从其余部分中减去 1。我们可以将这些称为 A 事件、B 事件或 C 事件。

例如,(2,1,1) 这些事件会是什么

A Event: (4,0,0)

B Event: (3,1,0)

C Event: (3,1,0)

现在,我的问题是因为一个事件产生了(4,0,0),我将如何对第一个arraylist 进行排序以使该数字紧随其后,然后有(3,1,0) 但没有(3,1,0) 重复。所以数组排序后,应该是

(2,1,1) ( 4,0,0) (3,1,0) (2,2,0) 

【问题讨论】:

  • 我正在考虑将事件放入 arraylist,然后将第一个 arraylist 与答案 arraylist 进行比较,但我不确定。
  • 如何获得B Event: (3,1,0)C Event (3,1,0)?我了解A Event: (4,0,0),但之后就迷路了。
  • 当您从第一个位置减去 1 并从第三个位置减去 1 并将 2 添加到第二个位置时,会发生 B 事件。当你从第一个位置和第二个位置减去 1 并在第三个位置加 2 时发生 C 事件。

标签: java sorting arraylist collections


【解决方案1】:

目前我还不清楚您的问题,但我想我可以帮助您指出正确的方向。

既然你说:

没有 (3,1,0) 重复

我建议为确保Collection 中对象的唯一性,您应该考虑使用实现Set 接口的类(有关详细信息,请参阅Javadoc for Set)。

假设您不是自己编写排序算法,您可以使用SortedSet,然后实现必要的功能(Comparable 接口或Comparator),以便您的对象以您想要的方式排序(较早的链接提供了描述如何执行此操作的链接。

希望这会有所帮助,如果您可以尝试使问题更清楚,我很乐意提供一些额外的指示。

以下是您可以处理的一些令人困惑的部分:

每个整数必须至少大于或大于/等于下一个数字。

这很令人困惑,因为您给出了两个相互冲突的要求。每个数字是严格大于下一个数字还是大于或等于下一个数字?

每个对象的整数也是从大到小排序的。

我不确定您的意思是什么,因为您已经说过对象中包含的整数是按特定顺序排列的。

因为一个事件产生 (4,0,0) 我将如何对第一个数组列表进行排序以使该数字紧随其后

您并没有真正告诉我们排序应该如何工作。您能否更详细地描述该算法 - 它如何决定项目的顺序,应该如何将一个项目与另一个项目进行比较?

【讨论】:

  • 对不起,我应该在问这个问题时更准确。所以我使用构造函数来创建对象。所以从某种意义上说,
  • 对不起,我应该在问这个问题时更准确。所以我使用构造函数来创建对象。所以从某种意义上说,{(2,1,1), (2,2,0), (3,1,0), (4,0,0)} 是状态,并且在每个状态中,它们是排序的我在构造函数中定义。这就是我的意思,每个整数必须来自大于或大于或等于。如果 n = 4,我从 0 到 4 运行 for 循环 3 次以找到加起来为 4 的整数。如果可能出现 0,0,4,我在我的 for 循环中确保它必须是 4 ,0,0。这就是我的意思。
猜你喜欢
  • 2019-12-08
  • 1970-01-01
  • 2015-10-06
  • 2016-07-18
  • 2014-03-06
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多