java容器对象_[转]JAVA对象容器

要用Java实现记事本的功能。首先列出记事本所需功能:

可以添加记录(字符串);

可以获得记录条数;

可以删除其中某一条记录;

可以获得指定第几条的记录;

可以列出所有的记录。

如果这个记事本是某个大程序的其中一部分,也就是说还有上层程序,那么上层程序就有可能会调用这个记事本以上列出的某个数据。

所以我们称上述所列功能为这个记事本的接口。

那么调用这些接口就是通过记事本这个类的public函数(method)。

但是,怎么实现记录呢?显然所记录的字符串不能记录在某个数组里,因为数组的长度是预先设定好的。这时就要用到泛型容器 Arraylist<>,这个arraylist也是系统的一个类,所以在使用它的时候要定义一个新的对象出来:private Arraylist notes = new Arraylist();  还要声明 import java.util.ArrayList;

arraylist可以任意往里面存放数据,不限数目,这就实现了记事本的要求。

arraylist的基本操作: Arraylist notes

notes.add()

notes.size()

notes.remove(index)

notes.get(index)

notes.toArray(String[] a=new String[notes.size()])

通过以上操作实现记事本的接口函数。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagenotebook;

2

3 importjava.util.ArrayList;

4

5 public classNotebook {

6

7 private ArrayList notes = new ArrayList();

8

9 public voidadd(String s) {

10 notes.add(s);

11 }

12

13 public intgetSize() {

14 returnnotes.size();

15 }

16

17 public void removeNote(intindex) {

18 notes.remove(index);

19 }

20

21 public String getNote(intindex) {

22 returnnotes.get(index);

23 }

24

25 publicString[] list() {

26 String[] a = newString[notes.size()];

27 notes.toArray(a);

28 returna;

29 }

30

31 public static void main(String[] args) { //test

32 Notebook nb = newNotebook();

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

运行:

5c6178e2b159b759ddf45f0909c2a3b7.png

-----------------------------------------------------------------------------------------

另外,容器类型还有集合容器(Set),如HashSet,同样是一个类,所具有的特性是内部元素是不排序的,不能有重复的元素,与数学里的集合概念相同。

c2915a96e15fd1cee545f3a6c8660c71.png

由程序运行结果可以看到ArrayList 和HashSet 这两种容器的不同。

注意:由程序还可以看到,两个容器的输出不再是把容器的每个元素赋值给另一个数组,再通过for each循环把数组里的每个元素输出。在这里我们是直接println出来了一个容器的对象,是可以的。这是因为:{

如第一个红框所示,如果一个类里有“public String toString() {}”函数,则可以直接println这个类的对象名,输出的时候会自动调用toString函数的,如第二个红框所示。所以,我们猜测,ArrayList和HashSet这两个公共类源文件里一定也有“public String toString() {}” 类似的函数。

}

-----------------------------------------------------------------------------------------

HashMap容器:HashMap

一个键对应一个值,当给一个键多次put之后,这个键对应最后put的值,如图:(一个输入面额,输出多对应美元名称的程序,如:1美分叫做1penny。)

b5c165be21ac039cca6d1aaa90600bc0.png

HashMap的遍历:

a6e0a7d194e1e234a528ec12c9f591bc.png

d080bdd43fd4c45c8f2ad8273570718b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值