Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

195
Vistas
¿Puedo usar HashMap de caracteres en lugar de String?

Quiero tener una función para construir una cadena a partir de caracteres ingresados y detener la construcción si obtiene un carácter de entrada que contiene.

Sé que puedo usar String.contains() para esto, pero estoy aprendiendo sobre HashMaps y me pregunto si una forma más rápida de hacerlo podría ser almacenar los caracteres ingresados en un HashMap y usar el método HashMap.contains() .

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

HashMap::containsKey es O(1) , String::contains no lo es . La implementación puede cambiar según la versión de JVM, pero es más como O (n).

Entonces, sí, usar un HashMap para buscar un valor debería ser más rápido (en datos pequeños probablemente no notará la diferencia) que llamar a String::contains . Pero un Map almacena una clave y un valor, si no le importa el valor, puede usar un Set (tenga cuidado, todos los valores son únicos en este tipo de colección) porque Set::contains es O(1) .


Como @ n247s mencionado en el comentario. Excepto si realmente tiene un problema de rendimiento, String::contains debería funcionar bien y hacer que el código sea más fácil de leer.

over 4 years ago · Santiago Trujillo Denunciar

0

Un Set sería una buena estructura de datos para usar aquí.

Sin embargo, solo toma nota de 1 cosa,

Si necesita una búsqueda que distinga case-sensitive , puede usar un HashSet . Ejemplo

 Set<String> set = new HashSet<>();

De lo contrario, si necesita una búsqueda que no distinga case-insensitive entonces un TreeSet . Ejemplo

 Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
over 4 years ago · Santiago Trujillo Denunciar

0

HashMap<> es solo una clase que amplía la interfaz Map<> , puede usar containsKey() o containsValue() . Si desea recorrer los valores en HashMap , puede usar el método HashMaps.values() y combinar/agregar el valor a String.

NO PROBADO:

 int count = -1; String new = ""; for (char c : map.values()) { count++; if (string.charAt(count).equals(c)) break; new.concat(c); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda