Любое оптимизированное решение: получить индекс элемента в двух списках, расположенных в одной позиции - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу получить положение двух элементов 1 и А., если они расположены в одной и той же позиции.

Например, в списке один есть элементы {1,1,3,1,5} В списке два есть элементы {Q, B, Z, A, c}

вывод должен быть 3.

Ниже мой код, он работает все хорошо, я ищу, если у кого-нибудь есть оптимизированное решение, тогда, пожалуйста, ответьте.

или решение с использованием Java8

public class GetIndex {   
     public static void main(String[] args) {
       // TODO Auto-generated method stub
       List<String> one = Arrays.asList("1", "1", "3", "1", "5");
       List<String> two = Arrays.asList("Q", "B", "Z", "A", "C");
       for (int i = 0; i < one.size(); i++) {
            if (one.get(i).equals("1") && two.get(i).equals("A")) {
            System.out.println("Index where 1 & A: " + i);
        }
    }
 }
}

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

То же самое, но с использованием java8 stream api:

IntStream.range(0, one.size()).boxed()
        .filter(i -> one.get(i).equals("1") && two.get(i).equals("A"))
        .forEach(index -> System.out.println("Index " + index));

Для хранения индексов используйте .collect(Collectors.toList()) вместо .forEach(..).Тогда все выражение возвращает List<Integer>

0 голосов
/ 21 февраля 2019

Ваш код основан на том факте, что one меньше или равен по длине two, что может быть неверно.

Возможно, вы захотите улучшить это, используя

for (int i = 0; i < Math.min(one.size(), two.size()); i++) {

В противном случае, с точки зрения сложности времени выполнения, наихудший случай - O (N), когда такой пары не существует, и вы не будетесделать лучше, чем это для одного исполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...