如何按特定顺序排列数组?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
`上下文太少。请提供一个。