Sort multiple lists by having the same element in dart

Viewed 20

I need to sort all the elements in all lists by the number of similarities

var list1 = ["a", "b", "c", "d"];
var list2 = ["a", "c"],
var list3 = ["c", "d"],
var list4 = ["d"],

output:

["c", "a", "d", "b"]

All four lists have c value, that is why, it is first, then a,d,b Should sort all lists in this way.

Thanks!

1 Answers

Count the occurrences first, then sort by those.

var lists = <List<String>>[list1, list2, list3, list4];
var count = <String, int>{};
for (var list in lists) {
  for (var element in list) {
    count[element] = (count[element] ?? 0) + 1;
  }
}
for (var list in lists) {
  list.sort((a, b) => (count[b] ?? 0).compareTo(count[a] ?? 0));
}
Related