在java中修改arraylist索引

在java中修改arraylist索引,java,Java,假设我有一个数组列表,其中包含以下内容: id,x,y,信号 id、x_coor和y_coor的值来自数据库,信号值是随机生成的 我的问题是如何根据信号对列表的索引重新排序 例如: 我需要那张清单 [0] -> 3, 100, 300, 20 [1] -> 1, 200, 100, 41 [2] -> 2, 300, 100, 81 . . . 有人能帮忙吗?我是java新手您可以使用下一个算法: 将列表转换为数组。 根据x_coor对该数组进行排序。 将所有数组添加到新列表

假设我有一个数组列表,其中包含以下内容: id,x,y,信号

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

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

我需要那张清单

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

有人能帮忙吗?我是java新手

您可以使用下一个算法:

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

public static void main(String[] args) {
    // Coordinates is your content " id, x_coor, y_coor, signal"
    List<Coordinates> randomSorted = getRamdomlyGeneratedList();

    Coordinates[] arrayToSort = randomSorted.toArray(new Coordinates[0]);

    Coordinates[] sortedArray = sort(arrayToSort);

    List<Coordinates> sortedList = new ArrayList<Coordinates>();
    for (int i = 0; i < sortedArray.length; i++) {
        sortedList.add(sortedArray[i]);
    }
}

您可以使用类似POJO的元组来实现这一点

如果您以其他方式存储数据,请让我知道,我将更新此答案以反映这一点

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.sortlist;它将根据这种新的自然排序对列表进行排序

如果您已经有了一个想要保留的自然顺序,或者想要在两种不同的场景中以两种不同的方式对元组对象进行排序,那么您需要实现一个比较器来添加额外的顺序,而不破坏原始的自然顺序


使用什么类型的容器?它是基元类型的数组,还是数组列表,列表列表,或者类的实例列表?每种情况都有许多重复项,因此您需要向我们提供更多信息,以便我们可以为您指出正确的一种。您需要类似于array.sortItem-one,Item-two->one.signal-two.signal。。。但是如果你想要更好的代码,你需要提供更多的代码answer@nikdeapen您应该使用Integer.compare来代替减法,以防止数字溢出。为什么不直接对列表本身进行排序呢?那你叫什么样的方法呢?我真的很喜欢你的回答。谢谢你的建议!
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);
     }
}