ArrayList 顺序泛型容器
HashSet 集合容器
HashMap<Key,Value>容器
要用Java实现记事本的功能。首先列出记事本所需功能:
可以添加记录(字符串);
可以获得记录条数;
可以删除其中某一条记录;
可以获得指定第几条的记录;
可以列出所有的记录。
如果这个记事本是某个大程序的其中一部分,也就是说还有上层程序,那么上层程序就有可能会调用这个记事本以上列出的某个数据。
所以我们称上述所列功能为这个记事本的 接口 。
那么调用这些接口就是通过记事本这个类的public函数(method)。
但是,怎么实现记录呢?显然所记录的字符串不能记录在某个数组里,因为数组的长度是预先设定好的。这时就要用到 泛型容器 Arraylist<> ,这个arraylist也是系统的一个类,所以在使用它的时候要定义一个新的对象出来:private Arraylist<String> notes = new Arraylist<String>(); 还要声明 import java.util.ArrayList;
arraylist可以任意往里面存放数据,不限数目,这就实现了记事本的要求。
arraylist的基本操作: Arraylist<String> notes
notes.add()
notes.size()
notes.remove(index)
notes.get(index)
notes.toArray(String[] a=new String[notes.size()])
通过以上操作实现记事本的接口函数。
1 package notebook; 2 3 import java.util.ArrayList; 4 5 public class Notebook { 6 7 private ArrayList<String> notes = new ArrayList<String>(); 8 9 public void add(String s) { 10 notes.add(s); 11 } 12 13 public int getSize() { 14 return notes.size(); 15 } 16 17 public void removeNote(int index) { 18 notes.remove(index); 19 } 20 21 public String getNote(int index) { 22 return notes.get(index); 23 } 24 25 public String[] list() { 26 String[] a = new String[notes.size()]; 27 notes.toArray(a); 28 return a; 29 } 30 31 public static void main(String[] args) { //test 32 Notebook nb = new Notebook(); 33 nb.add("frist"); 34 nb.add("second"); 35 System.out.println(nb.getSize()); 36 String[] a = nb.list(); 37 for(String s:a) { 38 System.out.println(s); 39 } 40 } 41 42 } Notebook.java
运行:
-----------------------------------------------------------------------------------------
另外,容器类型还有集合容器(Set),如HashSet,同样是一个类,所具有的特性是内部元素是不排序的,不能有重复的元素,与数学里的集合概念相同。
由程序运行结果可以看到ArrayList 和HashSet 这两种容器的不同。
注意:由程序还可以看到,两个容器的输出不再是把容器的每个元素赋值给另一个数组,再通过for each循环把数组里的每个元素输出。在这里我们是直接println出来了一个容器的对象,是可以的。这是因为:{