排序 ArrayList 以按特定字符串重新排列

Sorting ArrayList to rearrange by a specific string

我正在尝试通过特定字符串重新排列我的 ArrayList。所以我想通过优先考虑类型“卡车”而不是类型“轿车”或类型“SUV”来重新排列我的列表。从技术上讲,我可以按字母顺序使用反向排序,但我想在特定字符串本身具有优先级的地方实现。例如,如果我有如下随机顺序的汽车列表,

ArrayList<Car> cars = new ArrayList<Car>(Arrays.asList(
new Car("1", "truck"), 
new Car("2", "sedan"), 
new Car("3", "SUV"), 
new Car("4", "truck"), 
new Car("5", "truck"));

所以我理想的顺序应该是1,4,5,2,3。我很感激任何想法!

您可以根据 List 中的索引进行排序。

List<String> order = Arrays.asList("truck", "sedan", "SUV");
cars.sort(Comparator.comparingInt(c -> order.indexOf(c.getType()));

就在我的头顶,l。首先,对于 'types',我会创建一个包含 属性 'priority'(可能是整数)的所有类型的枚举。如果这是一个自定义 class 你 wrote/have 访问编辑我会在你更改 class 之后在汽车 class 上实现类似的接口所以 'type' 使用枚举而不是字符串。只要枚举与给定的字符串匹配,您就可以使用搜索方法将字符串与枚举名称进行匹配(不确定是否区分大小写),请参见此处了解如何实现的一个很好的示例 可比接口 https://www.javatpoint.com/Comparable-interface-in-collection-framework。然后根据枚举优先级值实现compare to。