转自:http://www.java265.com/JavaJingYan/202110/16354330941610.html

ArrayList简介:

ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。

ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的 CopyOnWriteArrayList类。

ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问,实现了Cloneable接口,能被克隆。

下文笔者讲述java中初始化ArrayList的三种不同方式,如下所示:

方式1:
实例化一个List对象
然后采用add方法添加数值

例:

 List<String> list1 = new ArrayList<String>();
  list1.add("java265.com");
  list1.add("我的最爱");
  list1.add("我的网站");

借助一个List进行初始化

List<String> list2 = new ArrayList<String>(Arrays.asList("java265.com", "我最爱的网站", "我的最爱"));
  List<String> list3 = new ArrayList<String>(Collections.nCopies(2, "java265.com"));
  

使用匿名内部类进行初始化

下面的初始化代码:
     最外层的大括号:代表创建一个ArrayList匿名子类
	 内层的大括号定义了该匿名子类的构造块,自定运行其中的代码
  List<String> list4 = new ArrayList<String>() {
          {
              add("Java265.com");
              add("我的最爱");
              add("我的网站");
          }
      };

发表回复