java - 如何根据项目的主序列列表对一小部分项目进行排序?

标签 java arrays algorithm list sorting

如果我有一个按优先级/顺序排序的项目的概念性主列表:

1. dog

2. cat

3. fish

4. bunny

5. hamster

另一个列表带有值

["bunny", "dog", "fish"]

如何根据主列表对传入列表进行排序?所以,在这个例子中,我希望第二个列表的结果是

["dog", "fish", "bunny"]

排序后。

我可以手动编写一个函数来实现它,但我觉得 Java 已经有某种内置和优化的方法来做这种事情。在 Java 中完成此类列表排序的最佳方法是什么?

最佳答案

您可以做的是创建主副本并使用 List#retainAll方法来保留主控中的顺序。

示例:

// Master list
List<String> master = new ArrayList<>(Arrays.asList("dog", "cat", "fish", "bunny", "hamster"));

// list to sort with respect to master      
List<String> listToSort = new ArrayList<>(Arrays.asList("bunny", "dog", "fish"));

// copy of master   
List<String> masterCopy = new ArrayList<>(master);

// keep only the items in masterCopy that are in the listToSort
masterCopy.retainAll(listToSort);

System.out.println(masterCopy);

输出:

[dog, fish, bunny]

关于java - 如何根据项目的主序列列表对一小部分项目进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37799020/

相关文章:

java - 如何围绕正方形移动图像

Java 没有接收到按键?

java - 比较编辑器示例

arrays - Matlab:使用逻辑索引删除 IF-ELSE 条件语句

java - 将 2d double 数组转换为 2d int 数组

javascript - Javascript 中基本原型(prototype)设计的问题

algorithm - 使用圆心、半径和圆上的 3 个点计算圆弧上的点

java - JCheckBox组件可以添加到JComboBoxes中吗?

c - 简单递归帮助

algorithm - 这个方法的目的是什么?