Как проверить, является ли список контейнером всех элементов другого списка - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь найти хороший способ определить, существуют ли все элементы в одном списке в другом списке.

Я пробовал различные методы, но они становятся все более и более уродливыми, поскольку я go и я Я надеюсь, что где-то есть элегантное решение.

Попытка 1:

if (listOne.contains(ListTwo)) 

Это не ошибка, но и не работает. Я предполагаю, что он ищет не предметы, а фактический список, который он не имеет.

Попытка 2:

if (listOne.toString().substring(1,listOne.toString().length - 1).contains(listTwo.toString().substring(1,listTwo.toString().length - 1))) 

Это на самом деле работает, но это только кажется fr agile мне

Вопрос: Какое элегантное решение определить, есть ли все элементы в одном списке в другом списке?

Ответы [ 2 ]

1 голос
/ 28 марта 2020

используйте эту однострочную строку (я предполагаю, что списки не заботятся о дублированных элементах):

print(listOne.toSet().containsAll(listTwo));
1 голос
/ 27 марта 2020
main() {
 List<String> list1 = ["item1", "item2", "item3", "item4", "item5"];
  List<String> list2 = ["item2", "item1"];

  if (containsAll(list1, list2)) {
    print("it contains all");
  } else {
    print("it doesn't contain all");
  }
}

bool containsAll(List<dynamic> checkWhere, List<dynamic> checkWhich) {
  checkWhere.sort((a, b) => a.compareTo(b));
  checkWhich.sort((a, b) => a.compareTo(b));

  for (int i = 0; i < checkWhich.length; i++) {
    print(checkWhich.length);
    if (checkWhich[i] != checkWhere[i]) {
      return false;
    }
  }
  return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...