如何按特定顺序排列数组?JAVA

如何按特定顺序排列数组?JAVA,java,java-8,Java,Java 8,我有发送到我的数据库查询的输入: [25,1381,34, ...] 然后从查询中返回我的数据,但数据库已更改了返回数据的顺序 [{ id: 1381, name: 'Test' }, { id: 25, name: 'Another test' }, { id: 34, name: 'One last test' }, ...] 我想对数据重新排序,并按照id发送的顺序返回给调用方。即: [{ id: 25, name: '

我有发送到我的数据库查询的输入:

[25,1381,34, ...]
然后从查询中返回我的数据,但数据库已更改了返回数据的顺序

[{
    id: 1381,
    name: 'Test'
}, {
    id: 25,
    name: 'Another test'
}, {
    id: 34,
    name: 'One last test'
}, 
...]
我想对数据重新排序,并按照id发送的顺序返回给调用方。即:

[{
    id: 25,
    name: 'Another test'
}, {
    id: 1381,
    name: 'Test'
}, {
    id: 34,
    name: 'One last test'
}, 
...]

将数据重新排序为原始顺序的有效方法是什么

我从您的帖子中了解到,您的主要问题是获得所需订单的性能方法,并且假设您处理的是大规模数据,我会使用HashMap将
[251381,34,…]
的每个元素映射为“计数器”的值,该值在每次迭代时根据您的请求ID递增,然后使用此映射在排序时比较不同的记录

构建从ID到输入位置的映射:

Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < ids.length; ++i) {
  map.put(ids[i], i);
}
Map Map=newhashmap();
对于(int i=0;i
现在,构建一个
比较器
,该比较器基于此映射进行排序:

Comparator<YourObject> cmp = Comparator.comparing(yo -> map.get(yo.id));
comparatorcmp=Comparator.comparing(yo->map.get(yo.id));

然后使用此比较器对列表进行排序。

如果我弄错了,请纠正我的错误,但以相同顺序返回数据的方法可以是创建一个数组,该数组存储输入顺序
int order[]=new int[inputdb.size()]如果inputdb存储为集合。
然后,保存ID。即:

for(int i = 0; i < inputdb.lengh; i++){
    order[i] = inputdb.get(i).getId();
}
for(int i=0;i
最后,当数据从数据库中出来时,运行比较器或自己创建它:

for(int k = 0; k < inputdb.size(); k++){
    for(int j = 0; j < inputdb.size(); j++){
        if(order[k] == inputdb.get(j).getId()){
            inputdb.set(j,inputdb.get(j); 
            break;
        }
    }
}
for(int k=0;k

`

上下文太少。请提供一个。