我有两个数组列表list1
和list2
,我希望list2
顺序为list1
的顺序。有没有办法做到这一点?在一个列表中,我从数据库获得了表现最好的员工,并且使用表现最佳的员工ID,使用"in"
子句从数据库第二次获得了列表。
List<Long> list1 = new ArrayList<Long>();
list1.add(5645);
list1.add(2312);
list1.add(7845);
list1.add(1212);
和其他对象类型列表:
List<Employee> list2 = new ArrayList<Employee>();
list2.add(new Employee(1212, "A"));
list2.add(new Employee(2312, "V"));
list2.add(new Employee(5645, "D"));
list2.add(new Employee(7845, "T"));
其中list1
显示前4名的员工ID;
我使用id从数据库中获取了员工详细信息并获得了此列表。
现在我想将list2
的顺序设为list1
以显示在html页面上。
答案 0 :(得分:0)
List<Long> list1 = new ArrayList<Long>();
list1.add(5645);
list1.add(2312);
list1.add(7845);
list1.add(1212);
和其他对象类型列表:
List<Employee> list2 = new ArrayList<Employee>();
list2.add(new Employee(1212, "A"));
list2.add(new Employee(2312, "V"));
list2.add(new Employee(5645, "D"));
list2.add(new Employee(7845, "T"));
Collections.sort(list1, new Comparator<Long>() {
@Override
public int compare(Parameter) {
//Add your logic here for sorting
}
});
// now sort the list B according to the changes made with the order of
// items in list1
Collections.sort(list2, new Comparator<Employee>() {
@Override
public int compare(Parameter) {
// your logic for sorting.
}
});
可以通过此链接为您提供帮助:In Java how do you sort one list based on another?
答案 1 :(得分:0)
只需迭代productFlavors {
dev {
applicationId "com.swagata.devbuild"
}
prod {
applicationId "com.swagata.prodbuild"
}
}
,并为每个项找到list1
中的匹配元素。无需排序。
list2
这使用Apache Commons Collections的CollectionUtils。
或者,为了获得更好的性能,请先构建List<Employee> sortedList = new ArrayList<>();
for (Long id : list1) {
Employee match = CollectionUtils.find(list2, e -> e.id.equals(id));
// cannot sort, if list2 does not contain the id, or put your rule for this case
assert match != null;
sortedList.add(match);
}
:
Map
答案 2 :(得分:0)
您应该做的是让数据库对结果进行排序:
var query = connection.query(' SET @p1 = '" + P_MEMBER_ID + "' ; " +
" SET @p2 = '" + P_MEMBER_ID_TEST + "' ; " +
" SET @p3 = @insertResults'" + "' ; " +
"CALL PROC_MEMBER_INSERT(" +
" @p1 , " +
" @p2 , " +
" @p3 '); " +
"SELECT @p3;")";
query
.on('fields', function(fields, index) {
// the fields for the result rows that follow
})
.on('result', function(row, index) {
// index refers to the statement this result belongs to (starts at 0)
});
console.log('\n Output ' + row[#index_of_last_select]);
如果您坚持使用Java进行排序,请使用自定义Comparator:
SELECT name, score FROM Employees
ORDER BY score DESC
LIMIT 4;