Given two
arrays A1 and A2, sort A1 as per the order of elements in A2.
A1[] = {1, 2,
3, 9, 5, 6, 7, 1, 3, 5, 7}
A2[] = {5, 3,
2, 1}
Final result is
A1[] = {5, 5,
3, 3, 2, 1, 1, 9, 6, 7, 7}
We can solve
this problem by using custom comparator. Instead of comparing elements of A1[],
we compare indexes of A1[] elements in A2[].
import java.util.*; public class SortArray { public static void sort(List<Integer> a1, List<Integer> a2) { Collections.sort(a1, new Comparator<Integer>() { public int compare(Integer data1, Integer data2) { int index1 = a2.indexOf(data1); int index2 = a2.indexOf(data2); if (index1 != -1 && index2 != -1) return index1 - index2; if (index1 != -1) return -1; return 1; } }); } }
import java.util.Arrays; import java.util.List; public class SortArrayTest { public static void main(String args[]){ List<Integer> a1 = Arrays.asList(1, 2, 3, 9, 5, 6, 7, 1, 3, 5, 7); List<Integer> a2 = Arrays.asList(5, 3, 2, 1); SortArray.sort(a1, a2); System.out.println(a1); } }
Output
[5, 5, 3, 3, 2, 1, 1, 9, 6, 7, 7]
No comments:
Post a Comment