gpt4 book ai didi

java - 我们可以根据另一个列表来确定一个列表的顺序吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:11 25 4
gpt4 key购买 nike

我有两个数组列表 list1list2,我希望 list2 的顺序与 list1 的顺序相同。有什么办法可以做到这一点吗?在一个列表中,我从数据库中获取了表现最好的员工,并使用 "in" 子句列出了第二次使用表现最好的员工 ID 从数据库中获取的两个员工。

<小时/>
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。

现在我想让list2的顺序与list1一样显示在html页面上。

最佳答案

只需迭代 list1 并为每个项目在 list2 中找到匹配的元素。无需排序。

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);
}

这使用 Apache Commons Collections 的 CollectionUtils .

或者,为了获得更好的性能,请先构建一个 Map:

Map<Long, Employee> lookupMap = new HashMap<>(list2.size());
for (Employee e : list2)
lookupMap.put(e.id, e);

List<Employee> sortedList = new ArrayList<>(list2.size());
for (Long id : list1)
sortedList.add(lookupMap.get(id));

关于java - 我们可以根据另一个列表来确定一个列表的顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33140828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com