Есть ли возможность сравнить два массива без двух петель? У меня есть два массива со строками и нужно подсчитать количество равных элементов. (Длина массивов может быть различной)Элементы count, если в обоих массивах
ответ
нравится этот
String[] a ={"A","B"};
String[] b={"A","B","C"};
List<String> list=new ArrayList<String>();
list.addAll(Arrays.asList(a));
list.retainAll(Arrays.asList(b));
System.out.println(list);
System.out.println("equal elements:"+list.size());
выход
[A, B]
equal elements:2
отлично работает с неповторимыми элементами – user3107896
Вы можете использовать Arrays.asList(...).contains(...)
и для каждого результата "true
" приратить к успеху счетчик (cont++
);
Надеюсь, это поможет!
Это внутренне использует 'loop', чтобы проверить, содержит ли этот список элемент ... –
Я понял, что он не хочет явно использовать циклы –
В принципе, нет. Вы должны использовать по крайней мере две вложенные петли (for
, while
, do-while
) или другие методы, такие как рекурсивные методы, имитирующие петли, но в конце вы будете использовать два. Даже если вы используете List#contains
(как указано в RafaRomero's answer), вы используете два вложенных цикла, а не явно, но они есть.
Другой вариант может использовать Set<String>
для хранения String
и если элемент уже находится в Set
, то ваш счетчик добавит 1 значение. Обратите внимание, что этот вариант будет использовать два не вложенные петли:
public int countEqualElements(String[] yourFirstStringArray, String[] yourSecondStringArray) {
Set<String> mainData = new HashSet<String>();
int counter = 0;
for (String string : yourFirstStringArray) {
mainData.add(string);
}
for (String string : yourSecondStringArray) {
if (!mainData.add(string)) {
counter++;
}
}
return counter;
}
Предположив, что все элементы являются уникальными в каждом массиве:
String[] a ={"A","B", "E"};
String[] b={"A","B","C", "D", "E"};
Set<String> set = new HashSet<String>();
set.addAll(Arrays.asList(a));
set.addAll(Arrays.asList(b));
System.out.println("nb of equal elements "+ (a.length + b.length - set.size()));
Если элементы не являются уникальными в каждом массиве, создать промежуточный для обоих массивов.
Мне нравится эта идея. Использование 'Set' для решения этой проблемы обеспечивает очень элегантное решение. +1. – christopher
Используя набор метод в коллекции (уникальные значения)
String[] arrayA = new String[] {"A", "B", "C"};
String[] arrayB = new String[] { "B", "C", "D"};
Set<String> setA= new HashSet<String>(Arrays.asList(arrayA));
Set<String> setB= new HashSet<String>(Arrays.asList(arrayB));
setA.retainAll(setB);
System.out.println(setA.size());
- 1. Подсчет Если элемент появляется в обоих массивах
- 2. ReactJS - Сравнение массива, только если имя существует в обоих массивах
- 3. Удалить значения, найденные в обоих массивах
- 4. Редкие элементы в массивах
- 5. номера печати, которые находятся в обоих массивах
- 6. Java - возвращает наибольший элемент в обоих массивах
- 7. Как показать значения в обоих размерных массивах?
- 8. Получение числа одинаковых элементов в обоих массивах в Ruby
- 9. Соответствующие элементы в двух массивах
- 10. Отдельные элементы в различных массивах
- 11. Первое общее число в обоих массивах размером 1 млн.
- 12. Подсчет (дочерние) элементы в массивах
- 13. Учитывая 2 массива, возвращает элементы, которые не включены в обоих массивах
- 14. Элементы в двух массивах в C++
- 15. новый массив, содержащий электронные письма, которые появляются в обоих массивах
- 16. Mongodb Count на нескольких вспомогательных массивах
- 17. Если утверждения в 2D-массивах
- 18. Удаление строк, если найдено в нескольких массивах
- 19. Как отфильтровать пустые элементы в массивах
- 20. Как объединить два объекта массива, если значение ключа соответствует в обоих массивах
- 21. Соответствующие элементы в двух массивах PHP
- 22. Как правильно удалить элементы в массивах java
- 23. JSONPath/QML - Получить элементы в Струнных Массивах
- 24. Почему не обнаруживает лишние элементы в массивах
- 25. SQL элементы Count в парах
- 26. count все элементы в словаре
- 27. LotusScript Общие элементы в двух массивах
- 28. Найти общие элементы в двух несортированных массивах
- 29. Странное поведение в массивах. Случайные элементы
- 30. Mongo DB изменить элементы в вложенных массивах
Если вы хотите/нужно сравнить все элементы из массива со всеми элементами из другого массива, то вам нужно две петли (или рекурсивные методы, могут быть заменены петлями). Кроме того, вы можете использовать 'Map' для хранения 'String' и счетчика для каждой записи. –
Нет. Если они не равны по размеру, необходимо использовать две петли. –
Предположим, что все элементы уникальны в каждом массиве, добавьте все элементы в набор, а затем работайте с размером набора. –