Question

J'appelle une méthode dans une autre API qui accepte un java.util.Collection d'objets. J'ai regardé la méthode et elle copie immédiatement tout dans la collection dans un nouveau ArrayList avant d'effectuer sa tâche.

Cela m'a fait me demander: quelle est la collection Java au-dessus la plus basse absolue que je peux utiliser pour assembler rapidement les paramètres pour cette méthode?

Était-ce utile?

La solution

Cela dépend de la façon dont il copie les éléments, mais s'il crée le ArrayList-Copy comme ça

new ArrayList<Something>(inputCollection);

ou si c'est le cas

someCopy.addAll(inputCollection);

alors il passera par le inputCollection.toArray() qui est probablement mieux mis en œuvre par ArrayList.

Autres conseils

Cela dépend de vos données source.

Si vos données source sont déjà un tableau et que le tableau ne sera pas utilisé par d'autres, le moyen le plus rapide est d'avoir un wrapper mince:

final Object[] source = ...

Collection colllection = new AbstractCollection(){
    public Object[] toArray(){ return source; }
    // other methods don't matter
}

Si vous parlez de l'empreinte de la mémoire, jetez un œil à cette table dans mémoire de mémoire. Arrays$ArrayList manque, mais pourrait être une bonne alternative à ArrayList (Arrays.asList(...)).

Mise à jour: J'ai mis à jour les liens originaux vers le nouvel emplacement du projet dans GitHub. Tenez compte de ces mesures de plusieurs années.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top