trees tipos razon proporcion potenciometro parametros ordinales nominal niveles mercados medicion make long likert ldr investigacion intervalos intervalo iguales how funcion example estadistica escalas escala ejemplos ejemplo dicotomica deletion decimales datos con codigo black avl scala range guava red-black-tree range-map

tipos - Rango de escala/estructura de mapa de intervalo



tipos de escalas de medicion en investigacion (1)

Probablemente encapsularía el RangeMap de Guava. Todo lo que necesita es una clase de tres métodos, detrás de la cual puede ocultar la colección que no es de escalada.

Tenía curiosidad por lo difícil que sería lanzar mi propia solución basada en Java NavigableMap , y es bastante trivial:

  • define una clase que contiene MyValue (inicio, final, valor almacenado)
  • Utilice un mapa que MyValue punto de inicio al MyValue correspondiente MyValue

Con solo 40 líneas en Java con Lombok (y probablemente menos en Scala), no temería ningún mantenimiento. Escribí una test muy rudimentaria.

Tengo casi la misma pregunta que se menciona en Estructuras de datos que pueden asignar un rango de claves a un valor , pero para Scala.

Es decir, me gustaría tener un sistema mutable de rangos 1D no superpuestos [a [i], b [i]) que se asignaría a algún tipo de valor v [i] . Una estructura de datos subyacente estándar para hacer este tipo de trabajo es un árbol rojo-negro.

Operaciones que me gustaría que tuviera, preferiblemente todas deberían tener una complejidad de O (log n):

  • Consulte y obtenga un rango dado (inicio, final, valor almacenado) o la falta de este al especificar cualquier punto dentro de él.
  • Insertar un nuevo rango en esta estructura.
  • Eliminar un rango de estructura

Entonces, supongo que hasta ahora veo las siguientes variantes, todas las cuales tienen sus contras:

  • Coloque su propio contenedor sobre el TreeMap de Java : rápido y sucio, pero probablemente malo a largo plazo debido a la falta de un mantenimiento adecuado
  • Use el RangeMap de RangeMap de Guava - posible, pero sería bastante incómodo en el mundo de las colecciones de Scala
  • Trate de usar las implementaciones del árbol rojo-negro de Scala e intente rodar su propio rollo, sin embargo, creo que sería bastante difícil, dado que el TreeMap de Scala es inmutable solo y pierde los métodos de búsqueda directa, como el TreeMap de floorEntry

¿Me estoy perdiendo de algo? ¿Hay bibliotecas de extensiones de colecciones bien mantenidas de tipo guava que utilicen API centradas en Scala que amplíen las colecciones básicas de Scala?

Preguntas fuertemente relacionadas: