2016-02-02 63 views
1

使用中的addAll与同步列表我有一个List<GameElement>定义如下:在Java中

protected List<GameElement> elements = Collections.synchronizedList(new LinkedList<>()); 

并以元素的逗号分隔的列表添加到列表中,我使用的方法addElements

protected void addElements(GameElement... elements){ 
    this.elements.addAll(new LinkedList<GameElement>(Arrays.asList(elements))); 
} 

是否有更简单的方法将元素添加到List<GameElement> elements

+0

什么不干净呢?你想循环使用这些元素并逐一添加它们吗? – Gavriel

+1

为什么你在'addAll'中为'LinkedList'打扰? – user2357112

+1

为什么不只是'this.elements.addAll((Arrays.asList(elements))'? –

回答

2

您不必将列表转换为LinkedList。 addAll获取Collection,List实现Collection本身。

protected void addElements(GameElement... elements){ 
    // either: 
    this.elements.addAll(Arrays.asList(elements)); 

    // or as @VGR commented: 
    Collections.addAll(this.elements, elements) 
} 
+0

由于某种原因,这是不工作上次我检查;但它现在的作品。谢谢! –

+0

我解决你的编译器:) – Gavriel

+0

实际上,'Collections.addAll(this.elements,elements)'是首选。 [documentation](https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#addAll-java.util.Collection-T...-)声称它可以提供显着的性能优势。 – VGR