2012-03-23 11 views
4

Unter dem Code von Google io Open Source gegriffen.MAGIC Nummer in Android Google io 2011 Java Quelle

com.google.android.apps.iosched.util.Lists.java http://code.google.com/p/iosched/source/browse/android/src/com/google/android/apps/iosched/util/Lists.java

public static <E> ArrayList<E> newArrayList(E... elements) { 
    int capacity = (elements.length * 110)/100 + 5; 
    ArrayList<E> list = new ArrayList<E>(capacity); 
    Collections.addAll(list, elements); 
    return list; 
} 

com.google.android.apps.iosched.util.Sets.java http://code.google.com/p/iosched/source/browse/android/src/com/google/android/apps/iosched/util/Sets.java

public static <E> HashSet<E> newHashSet(E... elements) { 
    int capacity = elements.length * 4/3 + 1; 
    HashSet<E> set = new HashSet<E>(capacity); 
    Collections.addAll(set, elements); 
    return set; 
} 

Was soll die Kapazitätsvariable bedeuten? Vielen Dank im Voraus!

+0

Meine Frage ist, warum sie diese seltsame Gleichung verwenden, um die Kapazität jeder Sammlungen zu berechnen. int Kapazität = (elements.length * 110)/100 + 5;, int Kapazität = elements.length * 4/3 + 1; – user1165390

Antwort

2

Diese intern Sammlungen verwenden eine feste Anordnung, die Daten zu speichern. "Kapazität" ist die anfängliche Anzahl von Elementen, die das Array aufnehmen kann. Wenn Sie mehr Elemente als die aktuelle Kapazität hinzufügen, muss das interne Array erweitert werden. Dies ist ein zeitaufwendiger Vorgang und die Anfangskapazität versucht zu helfen, falls Sie wissen, wie viele Elemente hinzugefügt werden.