本帖最后由 lapouta 于 2013-09-03 20:27:43 编辑

解决方案 »

  1.   

    首先,你的 Arrays.asList() 方法写错了,应该是 c.addAll(Arrays.asList(elements))其次,你可以看下 Collections.addAll() 的源码:
     but this method is likely
         * to run significantly faster under most implementations.
         *
         * <p>When elements are specified individually, this method provides a
         * convenient way to add a few elements to an existing collection:
         * <pre>
         *     Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
         * </pre>源码上说的是在大多数情况下会更快,尤其实在元素有特别分离的时候。
      

  2.   

    用源码里的例子:Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon"); 你可以测试下,确实是 Collections.addAll() 更快速
    package bbs0903;import java.util.*;public class Collectionaddall { public static void main(String[] args) {
    long count = 100000000;
    long start = System.currentTimeMillis();
    for (int i = 0; i < count; ++i) {
    List<String> li = new ArrayList<String>();
    li.addAll(Arrays.asList( "Peaches 'n Plutonium", "Rocky Racoon"));
    }
    System.out.println(System.currentTimeMillis() - start); start = System.currentTimeMillis();
    for (int i = 0; i < count; ++i) {
    List<String> li = new ArrayList<String>();
    Collections.addAll(li, "Peaches 'n Plutonium", "Rocky Racoon");
    }
    System.out.println(System.currentTimeMillis() - start);
    }}