2012-03-23 4 views
4

以下はGoogleのオープンソースから取得したコードです。Androidのgoogle io 2011のMAGIC番号javaソース

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; 
} 

容量変数は何を意味すると思われますか? ありがとうございます!

+0

私の質問は、それぞれのコレクションの容量を計算するためにその奇妙な式を使用する理由です。 int capacity =(elements.length * 110)/ 100 + 5; int capacity = elements.length * 4/3 + 1; – user1165390

答えて

2

これらのコレクションは内部的にデータを保存するために固定された配列を使用します。 「容量」は、アレイが収容できる要素の初期数である。現在の容量より多くの要素を追加する場合は、内部配列を拡張する必要があります。これは時間のかかる操作であり、追加される要素の数を知っている場合には初期容量が役立ちます。