/ / Пошук подібності двох рядків масиву - java, масивів, рядків, порівняння

Знаходження схожості двох масивів String - java, масивів, рядків, порівняння

Я прошу вибачення, якщо є аналогічне питання, яке задано раніше, але тільки те, що я міг знайти Як знайти схожі шаблони в списках / масивах рядків

Проблема проста. Є два великі масиви рядків. І мені потрібно з'ясувати подібність. Подібність - це просто число подібних рядків.

String [] A = {"A", "B", "C", "D"}; String [] B = {"X", "Y", "B", "D"};

Схожості між цими двома списками складають 2.

Очевидне рішення - це груба сила. Просто порівняйте кожне слово з кожним іншим словом. Але що є наступним найкращим рішенням?

Чи використовує хеш-карта ефективне рішення? Пройдіть один список і покладіть кожне слово на хеш-карту. Потім подивіться, скільки ключів другого списку містяться в хеш-карті.

Чи це загальноприйнятий спосіб виконувати цей тип проблеми? Здається, є дерево-рішень, але вони не здається прямою.

Дякую.

Відповіді:

2 для відповіді № 1

Використовуйте a HashSet. Це забезпечує функціональність для перехресть.

list1 // your 1st list
list2 // your second list

Set<Type> s1 = new HashSet<Type>();
s1.addAll(list1); // add your values from list 1
Set<Type> s2 = new HashSet<Type>();
s2.addAll(list2); // add your values from list 2

Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);
System.out.println(intersection.size());

Ви можете звернутися до Set інтерфейс в Навчальні програми Java


2 для відповіді № 2

Ви можете зробити резервну копію кожного масиву в Set, а потім знайти перехрестя:

Set<String> firstSet = new HashSet<String>(Arrays.asList(firstArray));
Set<String> secondSet = new HashSet<String>(Arrays.asList(secondArray));
firstSet.retainAll(secondSet);
System.out.println(firstSet.size());