Как я могу найти объекты, которые находятся в ОБА массивах и быстро добавить его в другой массив? - PullRequest
0 голосов
/ 09 октября 2009

Как создать метод, который получает два массива в качестве параметров и возвращает массив, заполненный элементами, которые были в обоих массивах?

Ввод (Array1 передан в методе): ["Lisa", "George", "Mario"] Ввод (Array2 передан в методе): ["Луиджи", "Сьюзен", "Лиза"]

Метод должен вернуть: ["Lisa"]

Я не могу использовать какие-либо встроенные методы, поэтому мне нужно создать собственный алгоритм, но я застрял в течение последних 2 часов. Как я могу добиться этого в Java?

Редактировать: Христос на свече. Это не для домашней работы. Я просто хреновый в алгоритмах. Особенно такие базовые, как этот, и особенно на иностранном языке, который я никогда не использовал. : P

Ответы [ 4 ]

4 голосов
/ 09 октября 2009

Как насчет:

private static String[] findCommon(final String[] array1,
        final String[] array2) {
    final Set<String> common = new HashSet<String>();
    common.addAll(Arrays.asList(array1));
    common.retainAll(Arrays.asList(array2));
    return common.toArray(new String[0]);
}
3 голосов
/ 09 октября 2009

Одним из быстрых способов является следующий алгоритм:

For each item in list1, add it to a dictionary.
For each item in list2, check if it exists in dictionary, 
if item exists, add it to list3
else continue.
return list3.
2 голосов
/ 09 октября 2009

Грубая сила.

Цикл по первому массиву. Внутри этого цикла есть другой над вторым массивом. Сравните записи из обоих, добавив их в новый массив, если вы получите совпадение.

1 голос
/ 09 октября 2009
    [] result = ...

    foreach( itemA in a ) {
        foreach(  iteamB in b ) {
             if( itemB == itemA ) { // if they are in both places
                   r[] = itemB // append it to the result
             }
         }
    }
    return result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...