java数组的相对排序
时间: 2023-12-12 11:03:46 浏览: 34
Java中可以通过实现Comparator接口来实现数组的相对排序。Comparator接口有一个compare方法,可以用于定义比较规则。
首先,假设我们有一个整型数组arr1和一个参照数组arr2。我们想要按照arr2中元素的顺序对arr1进行排序。
我们可以创建一个Comparator对象,然后在compare方法中定义排序规则。在compare方法中,我们可以通过arr2.indexOf方法获取arr1中元素在arr2中的索引,并根据索引的顺序进行排序。
以下是一个示例代码:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class ArrayRelativeSort {
public static void main(String[] args) {
Integer[] arr1 = {2, 5, 7, 3, 8};
Integer[] arr2 = {5, 3, 2};
Arrays.sort(arr1, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int index1 = getIndex(arr2, o1);
int index2 = getIndex(arr2, o2);
return Integer.compare(index1, index2);
}
});
System.out.println(Arrays.toString(arr1));
}
private static int getIndex(Integer[] arr, int target) {
List<Integer> list = Arrays.asList(arr);
return list.indexOf(target);
}
}
```
运行上述代码,输出结果为:[5, 3, 2, 7, 8]。arr1按照arr2中元素的顺序进行了排序。
注意:如果arr1中存在arr2中没有的元素,可以根据实际需求决定将它们放在最前面或最后面,或者采取其他策略处理。