У меня есть 2 массива (на самом деле они двухмерные, но я не думаю, что это важно для вопроса)
val arr1 = arrayOf<Char>('a', 'b', 'c', 'd', 'e', 'b')
val arr2 = arrayOf<Char>('z', 'y', 'x', 'w', 'v', 'u')
Я пытаюсь реализовать следующий метод
fun filter(predicate: (T?) -> Boolean): Collection<Char> { ... }
Приведенные выше массивы упрощены, так как содержимое arr1 в реальном коде является обнуляемым универсальным (T?), Но я предполагаю, что мы можем продолжать в том же духе для вопроса.
Так что я пытаюсьДля этого нужно применить предикат к первому массиву и получить значения из соответствующих индексов из второго.
Итак, допустим, я пытаюсь
val res = obj.filter { it == 'b' }
Я бы хотел получить коллекцию с 'y' и 'u'.
Я ходил по домам по этому поводу, так что я думаю, что пропустил правильный путь.Моя последняя попытка была похожа на (использовал flatten, так как это двумерный массив)
val newList = arr1.flatten().mapIndexed{idx, it -> predicate}
Затем я мог бы использовать это для получения значений из arr2 (предполагая, что они всегда согласованно сглаживаются?)
Мой вопрос, я думаю, либо:
а) Как мне получить список индексов, используя mapIndexed с предикатом, или б) Как лучше это сделать (я предполагаю, что я взялнеправильный подход)