java怎么用一行代码初始化ArrayList

转:http://www.itstrike.cn/Question/e74b36fa-c01f-4254-87ec-e549df2abebe.html

 

 

 

我愿意创建列表的选项,以测试的东西。

我正在做:

 

ArrayList places = new ArrayList();
places.add("Buenos Aires");
places.add("Córdoba");
places.add("La Plata");
 

我重构代码做:

 

ArrayList places = new ArrayList(Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));
 

有这样做的更好的方法吗?

感谢阅读 !

解决方法 1:

其实,可能要初始化的"最佳"方式,ArrayList 是你写的方法,因为它不需要创建一个新的 List 以任何方式:

 

ArrayList list = new ArrayList();
    list.add("A");
    list.add("B");
    list.add("C");
 

渔获是相当多的键入所需,请参阅 list 实例。

有如使一个匿名的内部类的一个实例初始值设定项 (也称为一种"双大括号初始化") 的方法:

 

ArrayList list = new ArrayList() {{
    add("A");
    add("B");
    add("C");
}}
 

不过,我不太喜欢该方法,因为什么你最终是一个类的子类 ArrayList 有一个实例初始值设定项和这类只是为了创建一个对象 — — 只是看起来像我有点大材小用。

有何好是如果接受 项目硬币 收集文本的建议,我们可以有 Java 7 中的列表中文字:

 

List list = ["A", "B", "C"];
 

不幸的是它不会帮助您在这里,因为它将初始化一个 List,而不是 ArrayList,此外,它尚未提供,如果它以往任何时候都将和。

解决方法 2:

如果你,只是将它声明为列表中没有要 ArrayList,它会更简单呢?

 

List places = Arrays.asList("Buenos Aires", "Córdoba", "La Plata");
 

解决方法 3:

 

import com.google.common.collect.ImmutableList;

....

List places = ImmutableList.of("Buenos Aires", "Córdoba", "La Plata");
 

 

解决方法 4:

漂亮的很多,最简单的方法就是 List strings = new ArrayList(asList("foo", "bar", "baz")),如果您必须有一个 ArrayList,否则您应该在大多数情况下只是使用List strings = asList("foo", "bar", "baz")

你说你已宣布作为列表一个 ArrayList 在您的代码中,但您不应该做的除非您正在使用的一些成员 ArrayList 在这并不是List,例如 ArrayList.ensureCapacity()

通常您应该只是声明变量,您要使用,它的列表通常是最通用接口的 List,和初始化它们在具体的实施,例如 ArrayList或 LinkedList

使用不实现,否则为你会发现您要在多个位置更改,当您想要使用另一种实现的接口。

另一个例子将总是声明变量,一个 InputStream 即使它通常是一个 FileInputStream,这是因为一天很快就您或其他人会想要使用一些另类的 InputStream

解决方法 5:

您可以创建一个工厂方法:

 

public static ArrayList createArrayList(String ... elements) {
  ArrayList list = new ArrayList(); 
  for (String element : elements) {
    list.add(element);
  }
  return list;
}

....

ArrayList places = createArrayList(
  "São Paulo", "Rio de Janeiro", "Brasília");
 

 

但并不比你第一次的重构。

更新: 更大的灵活性,它可以是一种通用:

 

public static  ArrayList createArrayList(T ... elements) { 
  ArrayList list = new ArrayList();  
  for (T element : elements) { 
    list.add(element); 
  } 
  return list; 
} 
 

 

解决方法 6:

只是注意到它在一个很简单的工作方法,如下所示:

 

 ArrayList arrList = new ArrayList() {"1",2,3,"4" };

List listCustomer = new List() { new Customer(), new Customer(), new Customer() };
 

 

这 C# 3.0 不双支撑所需的工作。希望这有助于。

解决方法 7:

 

若要设置列表填充 N 的默认对象的副本:

 

ArrayList list = new ArrayList(
    Collections.nCopies(1000, new Object()));    
    

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者 

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。

 

个人主页:http://knight-black-bob.iteye.com/



 
 
 谢谢您的赞助,我会做的更好!

你可能感兴趣的:(java,java,初始化,ArrayList)