Android diccionario TreeSet tiempo de carga más rápido

Tengo como 300000 palabras en mi diccionario (realmente guardado en formato txt (nueva línea delimitada) en sdcard de mi dispositivo Android). Quiero construir la estructura de datos que tomaría menos tiempo como sea posible para insertar palabras (String-s) de mi archivo txt en esta estructura de datos. Y este DS debe ser super rápido para comprobar si las palabras existen en el diccionario (este DS) o no. He intentado varios build-in DS y el más rápido IMO fue TreeSet. ¿Hay algún otro DS (no incorporado) que sería más rápido en insertar / crear DS y igual de igual que TreeSet para buscar?

Y una cosa más es que de alguna manera puedo "ayudar" a TreeSet a ser más rápido en insertar reorganizando mi archivo txt (poner las palabras en el orden correcto).

Saludos

En primer lugar, bien hecho en la experimentación para encontrar la mejor estructura para su aplicación. A menudo la gente discute sin probar varias opciones para obtener datos de rendimiento real.

Si desea guardar el tiempo de construcción, y el archivo de palabras no cambia muy a menudo, la mejora de velocidad de compilación obvia es almacenar en caché la estructura de datos. Sea cual sea la estructura de datos que esté utilizando, construya la estructura una vez y guarde la estructura en la tarjeta SD (en lugar de almacenar las cadenas). Las estructuras estándar de java.util se pueden almacenar usando Serialization .

Si desea más rápido tiempo de construcción, y su lista de palabras se clasifica en orden alfabético, o puede ser, entonces sólo podría almacenar en una matriz de cadenas. El tiempo de compilación será muy rápido otra vez, y el tiempo de búsqueda será similar a un TreeSet (usando Arrays.binarySearch () ).

Si desea una búsqueda más rápida, es posible que desee comprobar Perfect Hash ing o Trie s, pero estos no están en las bibliotecas estándar de Java.

Un trie será mucho más memoria eficiente que cualquiera de éstos, que puede hacerlo más rápido. ( Información sobre cómo encontrar una implementación )

Me sorprende que TreeSet sea más rápido que HashSet en sus experimentos, lo que significa que podría estar operando en una situación donde la asignación de memoria es costosa. ¿Recuerda ajustar la capacidad inicial cuando asignó el HashSet? Recuerde evitar un rehash costoso, usted necesita fijar la capacidad inicial a por lo menos el número de items / 0.75 (el factor de carga).

  • LockCanvas () muy lento
  • ¿Estoy bebiendo la plataforma / hardware?
  • ¿Cuál usar WebView o TextView en una lista con datos HTML en ella?
  • ¿Por qué el perro String.format de android es lento?
  • Cargando datos de forma eficaz en RecycleView
  • Cómo convertir mi proyecto de Android en un proyecto de maven
  • Android deja de cerrar usuario de la aplicación
  • Impacto de 'instanceof' en el código Java de Android
  • Ionic: transiciones lentas en la aplicación android instalada
  • Android desplácese hacia arriba ocultar vista y desplácese hacia abajo mostrar el efecto de vista como twitter
  • HttpClient ejecución de HttpPost significativamente más lento en Android 3.2 que 2.3.3
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.