Suppose we have the list [3,7,2,8,1,9,4]
and the sublist [4,1,7,9]
.
We want to sort the sublist such that the ordering of its elements becomes the same as the ordering of the same elements in the superlist.
[4,1,7,9] -> [7,1,9,4]
What is an efficient and elegant way of achieving this in Java?
CodePudding user response:
i assume that list
and sublist
is arrayList
list.forEach(l -> {
var index = Iterables.indexOf(subList, s -> s == l);
if (index != -1) {
subList.add(subList.get(index));
subList.remove(index);
}
});
CodePudding user response:
Also assuming that list
and subList
are of type ArrayList
but using the java8 strean api.
var list = List.of(3,7,2,8,1,9,4);
var subList = List.of(4,1,7,9);
var orderedList = subList.stream()
.sorted(Comparator.comparing(list::indexOf))
.collect(Collectors.toList());