2014-05-05 3 views
-2

Например, есть два списка (список массивов) A и B. Длина (размер) A равна 10, а длина (размер) - 100. Все элементы матрицы А существует в B. Я хочу, чтобы получить индекс позиции в B, который находится в А.поиск подписок в другой список в android

A[ 
    { 
     id = 10, name = "a" 
    }, 
    { 
     id = 22, name = "b" 
    }, 
    { 
     id = 30, name = "c" 
    }, 
    { 
     id = 45, name = "d" 
    }, 
    { 
     id = 55, name = "e" 
    }, 
    ... 
] 

B[ 
    { 
     id = 1, name = "xx" 
    }, 
    { 
     id = 2, name = "yy" 
    }, 
    ... 
    { 
     id = 10, name = "a" 
    }, 
    { 
     id = 11, name = "zz" 
    }, 
    ... 
    { 
     id = 22, name = "b" 
    }, 
    ..., 
    { 
     id = 100, name = "hello" 
    } 
] 

Я хочу индексной позиции элемента в B. Я использую два для петель. Но это требует времени. Если есть способ поиска этих элементов, используя один для цикла или любым другим способом.

ответ

2

Вы можете использовать HashMap для хранения большего массива из двух. Таким образом, вам нужно только выполнить итерацию по меньшему массиву, проверяя, существует ли текущий объект в hash map в O (1), что дает вам полную сложность O (n), где n - размер меньшего массива.

Смежные вопросы