改变java中的arraylist索引

时间:2016-01-29 18:48:39

标签: java

让我们说我有一个包含以下内容的数组列表: id,x_coor,y_coor,signal。

id,x_coor和y_coor的值来自数据库,信号值是随机生成的。

我的问题是如何根据信号重新排序列表的索引 例如:

[0] -> 1, 200, 100, 41
[1] -> 2, 300, 100, 81
[2] -> 3, 100, 300, 20
.
.
.

我需要该列表

[0] -> 3, 100, 300, 20
[1] -> 1, 200, 100, 41
[2] -> 2, 300, 100, 81
.
.
.
有人可以帮忙吗?我是java的新手

2 个答案:

答案 0 :(得分:0)

你可以使用类似元组的POJO来做到这一点。

(如果您以其他方式存储数据,请告诉我,我会更新此答案以反映这一点。)

<Label Content="_Thing:" Target="{Binding ElementName=TheContentControl, Converter={StaticResource ToContentConverter}}" />
<ContentControl Name="TheContentControl" />

这将使你的元组的自然顺序基于信号的值。

然后,您只需致电public class Tuple implements Comparable<Tuple> { private int id; private int x_coor; private int y_coor; private int signal; public int compareTo(Tuple t){ return Integer.compare(this.signal,t.signal); } } ,它会根据这种新的自然顺序对您进行排序。

如果您已经保留了自然顺序(或者希望在两种不同的场景中以两种不同的方式对Collections.sort(list);个对象进行排序),则需要实现一个Comparator来添加额外的顺序而不需要摧毁原始的自然秩序。

Here's a tutorial on using both the Comparable and Comparator inferfaces.

答案 1 :(得分:-1)

您可以使用下一个算法执行此操作:

  • 将您的列表转换为数组。
  • 根据x_coor对该数组进行排序。
  • 将所有数组添加到新列表中。

    Handle Value