ArrayList是系统类库中的一个类,能记录元素,也能保存我们加进去的元素;类似于数组下标,容器类也有下标机制,通过访问容器类对象的下标来访问对象的存放数据,但是若要访问没有存放数据的位置下标,则会越界(java.lang.IndexOutOfBoundsException)错误。
笔记本note的源代码如下:
package notebook;
import java.util.ArrayList;//通过java.util.ArrayList类库来使用java的容器类;
import java.util.HashSet;//通过java.util.HashSet类库来使用java的集合容器类;
public class NoteBook {
private ArrayList<String> notes = new ArrayList<String>();//建立一个名字叫做"notes"的“字符串(String)”型容器类;*注意:此字符串容器类只能输入“字符串”类型的数据,比如"int"类型的数据不能输入到该容器类中去;
public void add(String s){
notes.add(s);//容器类中包括的add函数,此函数可在对象notes中添加一个字符串s记录;
}
public void add(String s,int location){
notes.add(location,s);//通过这个接口可以在指定的位置(location)来插入想要插入的字符串s;也可以通过此接口来进行“插入字符串”的操作(原位置的数据向后移);
}
public int getSize(){
return notes.size();//容器类包含的size函数,此函数可以返回容器类中存放数据的多少;
}
public String getNote(int index){
return notes.get(index);//返回index位置的数据,即index位置存放的字符串;
}
public void removeNote(int index){
notes.remove(index);//此接口实现删除index位置的记录;remove为ArrayList类库的一个函数;
}
public String[] list(){
String[] a = new String[notes.size()];//建立一个和这个容器类同样大小的数组,通过这个数组来访问notes中的数据;
for(int i=0;i<notes.size();i++){
a[i] = notes.get(i);
}
notes.toArray(a);//toArray函数来实现输出容器类中存放的数据;
return a;
}
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<String>();//使用这段代码来说明容器类中的FOR-EACH循环的使用方法;
a.add("first");
a.add("second");
for( String s : a ){
System.out.println(s);
}
System.out.println("-----------------------------");
HashSet<String> s = new HashSet<String>();//集合容器中不能包含同样的元素,使用这段代码来区分两种容器类;
s.add("first");
s.add("second");
s.add("first");
System.out.println(s);
NoteBook nb = new NoteBook();
nb.add("first");
nb.add("second");
System.out.println(nb.getSize());
}
}
两种容器都可以使用system.out.println(s)进行输出。输出的结果为方括号括起来,表示为一个容器。
上图说明对象数组中的每个对象都是对象的管理者而非对象本身