初始化ArrayList我们一般这样写:

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

我重构代码做:

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

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

解决方法 1:

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

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

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

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

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

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

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

List<String> list = ["A", "B", "C"];

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

解决方法 2:

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

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

解决方法 3:

import com.google.common.collect.ImmutableList;

....

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

解决方法 4:

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

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

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

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

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

解决方法 5:

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

public static ArrayList<String> createArrayList(String ... elements) {
  ArrayList<String> list = new ArrayList<String>();
  for (String element : elements) {
    list.add(element);
  }
  return list;
} .... ArrayList<String> places = createArrayList(
  "São Paulo", "Rio de Janeiro", "Brasília");

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

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

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

解决方法 6:

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

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

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

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

解决方法 7:

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

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

java初始化ArrayList的更多相关文章

  1. 转:java怎么用一行代码初始化ArrayList

    java怎么用一行代码初始化ArrayList 您可以创建一个工厂方法: public static ArrayList<String> createArrayList(String .. ...

  2. Java如何用一行代码初始化ArrayList

    参考链接: 1.Initialization of an ArrayList in one line 2.java怎么用一行代码初始化ArrayList

  3. java 遍历arrayList的四种方法

    package com.test; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public ...

  4. Java.util.ArrayList详解

    java.util.ArrayList就是传说中的动态数组. 继承了关系,有此可看出ArrayList与list的collection的关系 public class ArrayList<E&g ...

  5. Java集合ArrayList的应用

    /** * * @author Administrator * 功能:Java集合类ArrayList的使用 */ package com.test; import java.io.BufferedR ...

  6. Java中ArrayList类详解

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  7. 内功心法 -- java.util.ArrayList<E> (1)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  8. 内功心法 -- java.util.ArrayList<E> (2)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  9. java.util.ArrayList、java.util.vector和java.util.LinkedList (JDK 1.8.0_111)

    一.java.util.ArrayList 1.1 ArrayList 继承结构 ArrayList实现了RandomAccess,可以随机访问(其实就是通过数组下标访问):实现了Cloneable, ...

随机推荐

  1. java 缺憾:异常的丢失

    一.java的异常实现也是又缺陷的,异常作为程序出错的标志决不能被忽略,但它还是可能被轻易地忽略.下了可以看到前一个异常还没处理就抛出下一个异常,没有catch捕获异常,它被finally抛出下一个异 ...

  2. 195 Tenth Line

    Given a text file file.txt, print just the 10th line of the file. Example: Assume that file.txt has ...

  3. nginx用户认证配置( Basic HTTP authentication)及认证原理和实现

    https://blog.csdn.net/guyue35/article/details/53906843

  4. [转] Web移动端Fixed布局的解决方案

    移动端业务开发,iOS 下经常会有 fixed 元素和输入框(input 元素)同时存在的情况. 但是 fixed 元素在有软键盘唤起的情况下,会出现许多莫名其妙的问题. 这篇文章里就提供一个简单的有 ...

  5. 记2013年度成都MVP社区巡讲

    上个周六在天府软件园A区的翼起来咖啡举行了MVP社区巡讲成都站的活动,这个巡讲活动去年也搞过一次. MVP社区巡讲是 @微软中国MVP项目组 支持的,由各地的MVP担任讲师,给本地技术社区提供的一种社 ...

  6. fpm制作rpm包

    一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...

  7. mysql xtrabackup工具备份

    一.注意事项 建议用xtrabackup备份时采用全备或增量备份的方式,楼主也尝试过单库备份,但是都以备份后恢复到已经存在数据库的mysqldata目录下后部分库会出幺蛾子而告终,建议使用mysqld ...

  8. 探究 encode 和 decode 的使用问题(Python)

    很多时候在写Python程序的时候都要在头部添加这样一行代码 #coding: utf-8 或者是这样 # -*- coding:utf-8 -*- 等等 这行代码的意思就是设定同一编码格式为utf- ...

  9. jqplot利用ajax传值画图表(利用jsp连接数据库)

    实现从数据库中取得数据,再把数据传给画jqplot的jsp界面!jsp界面再进行画图,画出我们所需的图表! 有两个jsp界面,7-12.jsp用来连接数据库,并把数据传给ajaxauto.jsp,aj ...

  10. Oracle数据库11gR2的卸载 - deinstall

    从Oracle 11gR2开始,Oracle推荐使用deinstall来卸载Oracle数据库.使用Oracle Universal Install(OUI) 的图形方式来卸载Oracle数据库软件了 ...