Java: использование строковых подстановочных знаков / регулярных выражений в качестве ключа карты - PullRequest
0 голосов
/ 13 октября 2019

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

У данного клиента есть уникальная комбинация строковых переменных - Name, Address1, Address2

Если некоторые данные отсутствуют, то для данной переменной по умолчанию используется значение «ALL».

Код извлекает все записи базы данных и создает карту записей клиентов, где customerKeyуникальная комбинация имени, адреса1, адреса2. CustomerKey - это класс этих строковых переменных с их собственными методами получения / установки и хэш-кодом (из apache HashCodeBuilder).

CustomerData - это просто дамп всех данных в записи для этого клиента в базе данных

Код работает до сих пор как обычно

String name = "Harry"; 
String address1 = "hello street"; 
String address2 = "hello town";

map<customerKey, CustomerData> lookupMap = getDataFromDB();

CustomerData data = lookupMap.get(new CustomerKey(name, address1, address2));

if (data==null){ 
data = lookupMap.get(new CustomerKey("ALL", address1, address2)); 
} 

if (data==null){ 
data = lookupMap.get(new CustomerKey("ALL", "ALL", address2)); 
} 

if (data==null){ 
data = lookupMap.get(new CustomerKey("ALL", "ALL", "ALL")); 
} 

return data

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

И я знаю, что если я хочу использовать групповые сравнениятогда мне нужно использовать .matches вместо .equals (например, "harry" .matches (". * arry") .

Но у меня возникли трудности с продвижением вперед.

У кого-нибудь есть совет?

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