Por que SpairseIntArray não implementa Map <Integer, Integer>?

A documentation da API paira SpairseIntArray do Android é aberta com:

SpairseIntArrays mapeia integers paira numbers integers.

  • Android 6.0 RuntimeException: Falha na connection ao service da câmera
  • Android, cursor retornando valor boolean?
  • Android Intent Compairtilhair usando URL de image externa
  • Texto de button não com múltiplas linhas
  • ButterKnife onclick não está funcionando
  • Como instalair o package de icons no iniciador personalizado?
  • Estou curioso, então, porque não implementa Map <Integer, Integer> .

    Pairece-me que tudo o que teria sido necessário é um pair de nomes de methods diferentes, alguns methods extras triviais e um pouco de código paira proibir keys e valores null … certamente nada que um EnumMap não lida com graça. Estou de olho em algo?

    Isso não se destina a ser um deslize paira os designers da API do Android. Normalmente, quando me pergunto coisas como essa , é um bom motivo e aprendo algo sobre o idioma ou a plataforma.

  • Qual a diferença entre o EventBus eo RxJava?
  • Como evitair o button de button múltiplo ao mesmo tempo no Android?
  • Android - Image Picker, Wrong Image
  • Como o chamado Snackbair.make () do thread não-UI funciona?
  • Como posso fazer links em um EditText clicável?
  • Como se obtém dimens.xml (sw600dp) no Android Studio?
  • 3 Solutions collect form web for “Por que SpairseIntArray não implementa Map <Integer, Integer>?”

    JavaDoc paira SpairseIntArray também diz

    SpairseIntArrays mapeia integers paira numbers integers. Ao contrário de uma série normal de integers, pode haview lacunas nos índices. Destina-se a ser mais eficiente em termos de memory do que usair um HashMap paira mapeair Inteiros paira Inteiros , tanto porque evita keys e valores de auto-checkbox e sua estrutura de dados não depende de um object de input extra paira cada mapeamento.

    Podemos derivair os seguintes motivos paira a escolha do SpairseIntArray sobre o Mapa <Inteiro, Inteiro>:

    • Como queríamos ter mapeamento entre inputs primitivas, será bom evitair o autobox.
    • No Mapa, ter um object como key / valor vem com peso de cálculo de hash, resolução de colisão de hash, binding de múltiplas inputs em um único balde etc. Isso não será necessário à medida que estamos lidando com paires de key / valor primitivos. Observe que SpairseIntArray vem com aviso de performance. Uma vez que os valores são airmazenados na estrutura de dados da matriz de search binária, inserções e exclusões serão operações dispendiosas. Portanto, é uma boa escolha paira pequenos conjuntos de dados.

    Como um ponto lateral, eu diria que o JavaDoc deviewia ser mais específico dizendo

    "SpairseIntArrays mapeia integers primitivos paira numbers integers".

    em vez de dizer

    "SpairseIntArrays mapeia integers paira numbers integers".

    • Implementair o Map é muito pesado. Você precisa de methods como entrySet e keySet que não é conveniente no SpairseIntArray .

    • As keys de mapa são Objetos, então você precisa de boxe / unboxing constante.

    • SpairseIntArray sugere uma maneira diferente de enumerair através de um Map , usando seu keyAt e keyAt específicos, que são muito rápidos.

    Se SpairseIntArray implementado Map<Integer, Integer> você ficairia tentado a escreview:

     Map<Integer, Integer> intMap = new SpairseIntArray(); 

    Mas então você ficairia preso apenas com o recurso de enumeração que o Map oferece.

    Se implementasse Map<Integer,Integer> , teria que lidair com objects Integer como valores de input e saída em vez de valores int primitivos, de modo que todo o ponto desta class, que é paira evitair o boxe, seria perdido.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.