Java基础学习总结--对象容器
目录:
要用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()])
通过以上操作实现记事本的接口函数。
package notebook;
import java.util.ArrayList;
public class Notebook {
private ArrayList<String> notes = new ArrayList<String>();
public void add(String s) {
notes.add(s);
}
public int getSize() {
return notes.size();
}
public void removeNote(int index) {
notes.remove(index);
}
public String getNote(int index) {
return notes.get(index);
}
public String[] list() {
String[] a = new String[notes.size()];
notes.toArray(a);
return a;
}
public static void main(String[] args) { //test
Notebook nb = new Notebook();
nb.add("frist");
nb.add("second");
System.out.println(nb.getSize());
String[] a = nb.list();
for(String s:a) {
System.out.println(s);
}
}
}
Notebook.java
运行:

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

由程序运行结果可以看到ArrayList 和HashSet 这两种容器的不同。
注意:由程序还可以看到,两个容器的输出不再是把容器的每个元素赋值给另一个数组,再通过for each循环把数组里的每个元素输出。在这里我们是直接println出来了一个容器的对象,是可以的。这是因为:{
如第一个红框所示,如果一个类里有“public String toString() {}”函数,则可以直接println这个类的对象名,输出的时候会自动调用toString函数的,如第二个红框所示。所以,我们猜测,ArrayList和HashSet这两个公共类源文件里一定也有“public String toString() {}” 类似的函数。
}
-----------------------------------------------------------------------------------------
HashMap容器: HashMap<Key,Value>
一个键对应一个值,当给一个键多次put之后,这个键对应最后put的值,如图:(一个输入面额,输出多对应美元名称的程序,如:1美分叫做1penny。)

HashMap的遍历:


Java基础学习总结--对象容器的更多相关文章
- java基础学习之对象转型
对象转型(casting): 1)一个基类的引用类型变量可以指向其子类的对象 2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法) 3)可以使用引用变量instanceof类名,来判断该引 ...
- java基础学习总结——对象转型
一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...
- JAVA基础学习-多态 对象转型 final
一.多态的产生条件 1:继承 存在继承的类之间 2:方法重装 3:父类继承子类重装的方法 子类的对象 也是属于父类的 二:对象的转型 1:向上转型:当子类转型成父类时 例如:Animal a = n ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- 3.Java基础之Date对象
毕向东老师Java基础学习笔记——Date对象 今天学习Java中的Date对象后,感觉这个对象对我们主要有以下几点用处. 1.获取时间和日期并按照自己定义的格式显示. 2.网站设计时显示时间. 知 ...
- 2.Java基础之Runtime对象
毕向东老师Java基础学习笔记——Runtime对象 今天学习Java中的Runtime对象后,感觉这个对象对我们主要有以下几点用处. 1.使用java代码打开本地可执行文件,比如打开一个计算器. 2 ...
- 1.Java基础之System对象
毕向东老师Java基础学习笔记——System对象 今天学习Java中的System对象后,感觉这个对象对我们主要有以下几点用处. 1.获取当前操作系统版本和类型. 2.获取当前操作系统的path中的 ...
随机推荐
- Java EE开发平台随手记1
过完春节以来,一直在负责搭建公司的新Java EE开发平台,所谓新平台,其实并不是什么新技术,不过是将目前业界较为流行的框架整合在一起,做一些简单的封装和扩展,让开发人员更加易用. 和之前负责具体的项 ...
- CSS层模型
参考:慕课网 点此可进 如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作.CSS定义了一组定位(positioning)属性来支持层布局模型 ...
- MySQL(二) 数据库数据类型详解
序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...
- python数据操作方法封装
工作中经常会用到数据的插叙.单条数据插入和批量数据插入,以下是本人封装的一个类,推荐给各位: #!/usr/bin/env python # -*- coding:utf-8 -*- # Author ...
- switch判断注意点
if判断,如果判断的两个值类型不同,会继续隐性转换,==,当然如果使用===就不会. 1 if(2=="2"){ 2 console.log("true"); ...
- NodeJs连接Oracle数据库
nodejs连接oracle数据库,各个平台的官方详情文档:https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 我的nodej ...
- Yii的学习(5)--Active Record的关联
官网原文:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.arr 官网中后半段为英文,而且中文的内容比英文少一些,先放到这里,之后有时 ...
- Linux文件标示
平时在使用ls -l时可以看到 [root@myserv /]# ls -l total 28 drwxr-xr-x 3 root root 21 Sep 17 11:29 app lrwxrwxrw ...
- try,catch,throw-----C++
1.try,catch,throw: try包含你要防护的代码 ,称为防护块. 防护块如果出现异常,会自动生成异常对象并抛出. catch捕捉特定的异常,并在其中进行适当处理. throw可以直接抛出 ...
- 百度地图与HT for Web结合的GIS网络拓扑应用
在<HT for Web整合OpenLayers实现GIS地图应用>篇中介绍了HT for Web与OpenLayers的整合,不少朋友反应国内用得比较多的还是百度地图,虽然HT整合百度地 ...