Не даром, но IP-адрес - это 4-байтовое целое число, как обычно это делается. Почему бы не закодировать это, а просто дать:
int ipSrc = convertIpToInt(String ip);
if ( ipSrc == ipDest ) {
///
}
будь твоим сравнением.
А для IPv6 вы можете использовать use long.
Опять же, я бы, вероятно, использовал java.net.Inet4Address и сохранил их в наборе.
Поскольку вы уже используете карту, почему бы не попробовать упрощенный подход? На полпути умная реализация Inet4Address.equals () будет выполнять целочисленное сравнение, а не сравнение строк.
Конечно, этот метод не работает, если вы хотите использовать подстановочные знаки ...: - /