•ArrayList:我们可以将其看作是能够自动增长容量的数组。
•利用ArrayList的toArray()返回一个数组。
•Arrays.asList()返回一个列表。
•迭代器(Iterator) 给我们提供了一种通用的方式来访问集合中的元素。
ArrayList类扩展AbstractList并执行List接口。
ArrayList支持可随需要而增长的动态数组。在Java\中,标准数组是定长的。在数组创建之后,它们\不能被加长或缩短,这也就意味着你必须事先知道数组可以容纳多少元素。但是,你直到运行时才能知道需要多大的数组。为了解决这个问题,类集框架定义了ArrayList 。本质上,ArrayList是对象引用的一个变长数组。也就是说,ArrayList 能够动态地增加或减小其大小。数组列表以一个原始大小被创建。当超过了它的大小,类集自动增大。当对象被删除后,数组就可以缩小
ArrayList有如下的构造函数
–ArrayList( )
–ArrayList(Collection c)
–ArrayList(int capacity)
–第一个构造函数建立一个空的数组列表。
–第二个构造函数建立一个数组列表,该数组列表由类集c中的元素初始化。
–第三个构造函数建立一个数组列表,该数组有指定的初始容量(capacity)。容量是用于存储元素的基本数组的大小。当元素被追加到数组列表上时,容量会自动增加- import java.util.ArrayList;
- public class ArrayListTest1
- {
- public static void main(String[] args)
- {
- ArrayList arrayList = new ArrayList();
- arrayList.add("hello");
- arrayList.add("world");
- arrayList.add("world");
- arrayList.add("welcome");
- String s1 = (String)arrayList.get(0);
- String s2 = (String)arrayList.get(1);
- String s3 = (String)arrayList.get(2);
- String s4 = (String)arrayList.get(3);
- System.out.println(s1);
- System.out.println(s2);
- System.out.println(s3);
- System.out.println(s4);
- System.out.println("------------");
- for(int i = 0; i < arrayList.size(); i++)
- {
- System.out.println(arrayList.get(i));
- }
- //arrayList.clear();
- //System.out.println(arrayList.isEmpty());
- arrayList.remove(0);
- arrayList.remove("welcome");
- System.out.println("------------");
- for(int i = 0; i < arrayList.size(); i++)
- {
- System.out.println(arrayList.get(i));
- }
- System.out.println("--------------");
- arrayList.add("aaa");
- arrayList.add("bbb");
- System.out.println(arrayList.indexOf("world"));
- }
- }
复制代码 –使用由toString( )方法提供的默认的转换显示类集的内容,toString( )方法是从AbstractCollection继承下来的。尽管它对简短的例子程序来说是足够了,然而很少使用这种方法去显示实际中的类集的内容。通常编程者会提供自己的输出程序。但在下面的几个例子中,仍将采用由toString( )方法创建的默认输出,尽管当对象被存储在ArrayList对象中时,其容量会自动增加。仍可以通过调用ensureCapacity( )方法来人工地增加ArrayList的容量。如果事先知道将在当前能够容纳的类集中存储许许多多的项时,你可能会想这样做。在开始时,通过一次性 地增加它的容量,就能避免后面的再分配。因为再分配是很花时间的,避免不必要的处理可以改善性能
•ensureCapacity( )方法如下所示
–void ensureCapacity(int cap)
–这里,cap是新的容量
•相反地,如果想要减小在ArrayList对象之下 的数组的大小,以便它有正好容纳当前项的大小,可以调用trimToSize( )方法。该方法如下
–void trimToSize( )
当使用ArrayList时,有时想要获得一个实际的数组,这个数组包含了列表的内容。可以通过调用方法toArray( )来实现它。下面是几个为什么可能想将类集转换成为数组的原因
–对于特定的操作,可以获得更快的处理时间
–为了给方法传递数组,而方法不必重载去接收类集
–为了将新的基于类集的程序与不认识类集的老程序集成- import java.util.ArrayList;
- public class ArrayListTest2
- {
- public static void main(String[] args)
- {
- ArrayList list = new ArrayList();
- list.add("hello");
- list.add(new Integer(2));
- String str = (String)list.get(0);
- Integer in = (Integer)list.get(1);
- System.out.println(str);
- System.out.println(in.intValue());
- }
- }
复制代码- import java.util.ArrayList;
- public class ArrayListTest3
- {
- public static void main(String[] args)
- {
- ArrayList list = new ArrayList();
- list.add(new Integer(3));
- list.add(new Integer(4));
- list.add(new Integer(5));
- list.add(new Integer(6));
- int sum = 0;
- for(int i = 0; i < list.size(); i++)
- {
- int value = ((Integer)list.get(i)).intValue();
- sum += value;
- }
- System.out.println(sum);
- }
- }
复制代码 –Arrays.asList()
•返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直写”到数组。)此方法同Collection.toArray 一起,充当了基于数组的API与基于collection 的API 之间的桥梁
|