#java #list #grails #groovy #compare
#java #Список #grails #groovy #Сравнить
Вопрос:
Я пытаюсь просмотреть содержимое одного списка, если другой список также содержит аналогичный элемент.
Я также не уверен, является ли это наиболее эффективным способом просмотра списка из того, что я использую в настоящее время.
Приведенный ниже код, который я пытаюсь запустить:
List list1 = [["GNCSSTDI", "Joe", "Thu Mar 07 19:43:59 EST 2019", "Logged work on 3/7"], ["LMGQYNQU", "Joe", "Thu Mar 07 21:41:50 EST 2019", "logged 3/7"]]
List list2 = ["GNCSSTDI", "LMGQYNQU", "AEIOSJWP"]
list1.each { l1 ->
list2.each { l2 ->
if (list1.toString() == l2.toString())
{
// match found
log.debug("MATCH FOUND")
}
}
}
Он никогда не повторяется с этим циклом for? Что именно я делаю не так. Первый элемент из каждого списка должен был совпадать, если я не ошибаюсь?
Спасибо
Ответ №1:
list1 состоит list
из списков. Итак, вы должны повторить каждый элемент снова после извлечения из list1
list1.each { l1 ->
l1.each { subL1 ->
list2.each { l2 ->
if (subL1.toString() == l2.toString()) {
// match found
println "match found"
}
}
}
}
Комментарии:
1. lol упустил это из виду ….. так что это также объясняет, почему, когда я все-таки заставил это работать, оно продолжало возвращать true на каждой итерации. Спасибо
Ответ №2:
В зависимости от того, что вы хотите сделать с результатами, может быть полезно что-то вроде этого;
List matches = list1*.intersect(list2).flatten()
Результатом вашего примера будет: [GNCSSTDI, LMGQYNQU]