Welcome 微信登录

首页 / 软件开发 / JAVA / Java进阶学习(六) 容器

Java进阶学习(六) 容器2014-08-28Java中有一些对象被称为容器(container)。容器中可以包含多个对象,每个对象称为容器中的一个元素。容器是用对象封装的数据结构(data structure)。

充满梦想的容器

不同的数据结构有不同的组织元素的方式,也可以有不同的操作。根据具体实施的不同,数据结构的操作效率也各有差别。Java中的容器也是这样。我们要选择适当的容器,以应对变化的需求。

(关于数据结构更多的内容,可参考)

数组

数组(array)是最常见的数据结构。数组是相同类型元素的有序集合,并有固定的大小(可容纳固定数目的元素)。数组可以根据下标(index)来随机存取(random access)元素。在内存中,数组通常是一段连续的存储单元。

Java支持数组这一数据结构。我们需要说明每个数组的类型和大小。如下:

public class Test { public static void main(String[] args) { Human[] persons = new Human[2];// array size 2 persons[0] = new Human(160); persons[1] = new Human(170);int[] a = {1, 2, 3, 7, 9}; // array size 5 System.out.println(a[2]);String[] names = {"Tom", "Jerry", "Luffy"};// array size 3 System.out.println(names[0]); } }
在说明类型时,在类型说明(Human)后面增加一个[],来说明是一个数组。使用new创建容器时,需要说明数组的大小。

我们可以使用 数组名[下标] 的方式来调用某个元素。我们可以逐个的初始化数组的元素,也可以在声明的同时使用{}初始化数组。

对于非基本类型的数组,比如Human[],数组中存储的是对象的引用。

我们可以调用System.arraycopy()方法来有效的复制数组:

public class Test { public static void main(String[] args) { int[] aFrom = {1, 2, 3, 7, 9}; // array size 5 int[] aTo= new int[3]; System.arraycopy(aFrom, 1, aTo, 0, 3); System.out.println(aTo[1]); } }
System.arraycopy()中,aFrom为想要复制出去的数组,aTo为想要复制到的数组,1为aFrom的想要复制出去的元素起始位置,0为aTo中想要存储复制来元素的起始位置,3为所要复制的元素总数。