Алгоритм поиска элемента в ArrayListOf()

Подскажите, пожалуйста, алгоритм поиска элементов массива по массиву. Иными словами, есть два массива:

object DataSource {

    fun getGroupsData(): ArrayList<MuscleGroup>{
       return arrayListOf(
            MuscleGroup(
                1,
                "Грудь",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                2,
                "Спина",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                3,
                "Ноги",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                4,
                "Ягодичные",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                5,
                "Дельты",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                6,
                "Руки бицепс",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                7,
                "Руки трицепс",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                8,
                "Предплечье",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                9,
                "Функциональные упражнения",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                10,
                "Кардио",
                R.drawable.icon_grud
            ),
            MuscleGroup(
                11,
                "Растяжка",
                R.drawable.icon_grud
            ),
        )
    }

    fun getExerciseData(): ArrayList<Exercise> {
        return arrayListOf(
            Exercise(
                1,
                1,
                "Жим штанги лёжа на горизонтальной скамье",
                "Это базовое упражнение в бодибилдинге и пауэрлифтинге со свободными весами, предназначенное для развития мышц груди, рук(трицепсов) и переднего пучка дельтовидных мышц.",
                R.drawable.icon_zhim,
                R.drawable.zhim
            ),
            Exercise(
                2,
                1,
                "Жим Свенда",
                "Жим Свенда - эффективное упражнение для развития грудных мышц. В отличие от обычного жима позволяет максимально свести локти и, тем самым, получить пиковую нагрузку на мышцы груди. Цель упражнения: развитие силовых показателей, улучшение нейромышечной связи и мышечного контроля, возможность 'шокировать' мышцы и исключить привыкание к нагрузкам, преодоление плато и застоя в развитии грудных мышц.",
                R.drawable.icon_zhim,
                R.drawable.zhim
            ),
            Exercise(
                3,
                1,
                "Жим Свенда с Т-грифом",
                "Жим Свенда - эффективное упражнение для развития грудных мышц. В отличие от обычного жима позволяет максимально свести локти и, тем самым, получить пиковоую нагрузку на мышщы груди. Цель упражнения: развитие силовых показателей, улучшение нейромышечной связи и мышечного контроля, возможность 'шокировать' мышцы и исключить привыкание к нагрузкам, преодоление плато и застоя в развитии грудных мышц. Использование Т-грифа позволяет сосредоточиться на проработке грудных мышц, не отвлекаясь на удержание равновесия.",
                R.drawable.icon_zhim,
                R.drawable.zhim
            ),
        )
    }

Два класса:

data class MuscleGroup(
    val id: Int,
    val name: String,
    val imgSrc: Int
)

data class Exercise(
    val id: Int,
    val idGroup: Int,
    val name: String,
    val description: String,
    val iconSrc: Int,
    val imgSrc: Int
)

Как найти совпадения: MuscleGroup.id == Exercice.idGroup и вернуть новый arrayListOf?


Ответы (1 шт):

Автор решения: Wlad
   val a = listOf<MuscleGroup>()
   val b = listOf<Exercise>()

    val c = mutableListOf<Int>()
    a.forEach { music ->
            b.forEach { exercise ->
                if (music.id == exercise.id) {
                    c.add(music.id)
                }
            }
        }
→ Ссылка