ExpandedLists 0.2.2.1

dotnet add package ExpandedLists --version 0.2.2.1                
NuGet\Install-Package ExpandedLists -Version 0.2.2.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ExpandedLists" Version="0.2.2.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ExpandedLists --version 0.2.2.1                
#r "nuget: ExpandedLists, 0.2.2.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ExpandedLists as a Cake Addin
#addin nuget:?package=ExpandedLists&version=0.2.2.1

// Install ExpandedLists as a Cake Tool
#tool nuget:?package=ExpandedLists&version=0.2.2.1                

Español

Expanded Lists

Expanded Lists, antes ListaBloques Remake es una biblioteca de estructuras de datos, por ahora solo listas, en C# que ofrecen más métodos que las implementaciones del lenguaje. Intento que mantengan un buen rendimineto, pero aún no he hecho pruebas de redimiento. Ha sido traducida a inglés para que sea más accesible porque dudo mucho que nadie vaya a usarla en español.

Estado de desarrollo

Lanzamiento 0.1

La parte más importante de esta versión, y uno de los motivos para crear este repositorio, es ListBloques. Una lista que usa arrays y Bloques<sup>*</sup> para ofrecer los beneficios de un array y una lista enlazada.<br/> Usa Lists para guardar los bloques y las posiciones que representan en la lista para agilizar el acceso a los elementos respecto a las listas enlazadas y usa los bloques para que la lista esté contenida en trozos de memoria separados como las listas enlazadas. Se le puede proporcionar una función para obtener longitudes para bloques nuevos y gestionar así la memoria usada, longitudes distintas darán rendimientos distintos.

  • <sup>*</sup>Los Bloques son listas de capacidad fija usadas en la implementación de las listas de bloques
    • Pueden usarse sin listas, pero no están pensadas para ello
    • Por ahora la única implementación de Bloque es ArrayBloque
      • Puede ser usado como una expansión de un array, que incluye una conversión implicita de esta

Tiene una jerarquía de interfaces, permitiendo la creación de listas con métodos y propiedades distintos.

Además incluye ListSerie, usa un List para implementar la interfaz ISerie, que permite usar funciones para generar nuevos elementos e insertarlos.

  • ListSerie, no ha sido completamente depurada y puede contener errores, pero será usada en el repositorio DivClac

Lanzamiento 0.2

En esta versión el proyecto ha sido traducido al inglés, lo he traducio yo, por lo que puede haber errores. He aprovechado para cambiar clases y métodos mal nombrados, como ISerie, que representa una sucesión en lugar de una serie y, por lo tanto, ahora se llama ISequence.

Objetivos para versiones futuras

  • Asegurar la eficiencia de ListBloques
  • Refinar la jerarquía de interfaces
  • Implementar otra lista, parecida a ListBloques, pero permitiendo que haya huecos en los bloques y que permita que haya bloques vacíos
    • Estas diferencias permitirán usar esta estructura como una matriz, quizás usar un array de Bloques como una matriz sea más obvio que como una lista
    • Esto puede requerir cambios en la jerarquía de interfaces
  • Hacer algo con las listas ordenadas

English

Expanded Lists

Expanded Lists, previously ListaBloques Remake is a C# data structures library, currently only containing lists. These lists offer more methods than the implementations of System.Collections. While I try to ensure efficiency, I still have not performed performance tests. This library was previosuly in Spanish.

Development notes

Release 0.2

Mostly the same as 0.1, ignoring the translation almost of the entire library.

The most important feature from 0.1, and the reason I considered publishing this library, is BlockList. A list that uses Blocks<sup>*</sup> to offer the benefits from both array lists and linked lists.<br/> Uses Lists to store blocks and the positions of their first elements for faster random access than linked lists and uses block for better memory management than regular array lists. Can be given a function to get lengths for new blocks, this can be used to manage memory usage, different block lengths will have different performances.

  • <sup>*</sup>Blocks are fixed-capacity lists used by block lists
    • Blocks may be used by themselves but are not designed with this use in mind
    • Currently the only block is ArrayBlock
      • Can be used as an extension of an array, featuring an implicit conversion to ArrayBlock

Features an interface hierarchy, allowing for the creation of lists with different methods and properties.

Also includes ListSequence, which delegates its methods to a List. Can be given a name , this makes its ToString() return a string with the index for each element.

  • This class has not been properly tested and was created for use in DivClac.

Plans for future releases

  • Ensure BlockList has good performance
  • Refine the interfaces
  • Create a new block list, which can allow empty slots and empty blocks
    • This list would be designed to be used as a matrix, which, perhaps, is more intuitive than a list like BlockList
    • May require changing the interface hierarchy
  • Do something with sorted lists
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.2.2.1 127 8/1/2024
0.2.2 89 8/1/2024

See GitHub, Spanish and English.
0.2 merges the two previous packages, leaving the blocks part deprecated.
0.2.2 merges the two packages since 0.2 merged the packages, which completely broke functionality for the non-block half