Java基础学习总结--对象容器

时间:2022-09-15 09:53:22

目录:

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

  1. 可以添加记录(字符串);
  2. 可以获得记录条数;
  3. 可以删除其中某一条记录;
  4. 可以获得指定第几条的记录;
  5. 可以列出所有的记录。

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

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

那么调用这些接口就是通过记事本这个类的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

运行:

Java基础学习总结--对象容器

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

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

Java基础学习总结--对象容器

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

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

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

             }

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

HashMap容器: HashMap<Key,Value>


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

Java基础学习总结--对象容器

HashMap的遍历:

Java基础学习总结--对象容器

Java基础学习总结--对象容器

Java基础学习总结--对象容器的更多相关文章

  1. java基础学习之对象转型

    对象转型(casting): 1)一个基类的引用类型变量可以指向其子类的对象 2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法) 3)可以使用引用变量instanceof类名,来判断该引 ...

  2. java基础学习总结——对象转型

    一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...

  3. JAVA基础学习-多态 对象转型 final

    一.多态的产生条件 1:继承  存在继承的类之间 2:方法重装 3:父类继承子类重装的方法 子类的对象 也是属于父类的 二:对象的转型 1:向上转型:当子类转型成父类时 例如:Animal a = n ...

  4. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  5. JAVA基础学习-集合三-Map、HashMap&comma;TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  6. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  7. 3&period;Java基础之Date对象

    毕向东老师Java基础学习笔记——Date对象 今天学习Java中的Date对象后,感觉这个对象对我们主要有以下几点用处. 1.获取时间和日期并按照自己定义的格式显示. 2.网站设计时显示时间.  知 ...

  8. 2&period;Java基础之Runtime对象

    毕向东老师Java基础学习笔记——Runtime对象 今天学习Java中的Runtime对象后,感觉这个对象对我们主要有以下几点用处. 1.使用java代码打开本地可执行文件,比如打开一个计算器. 2 ...

  9. 1&period;Java基础之System对象

    毕向东老师Java基础学习笔记——System对象 今天学习Java中的System对象后,感觉这个对象对我们主要有以下几点用处. 1.获取当前操作系统版本和类型. 2.获取当前操作系统的path中的 ...

随机推荐

  1. 行为驱动开发iOS &lt&semi;收藏&gt&semi;

    前段时间在design+code购买了一个学习iOS设计和编码在线课程,使用Sketch设计App,然后使用Swift语言实现Designer News客户端.作者Meng To已经开源到Github ...

  2. UE4 Android相对路径转绝对路径方法笔记

    在windows端用FPaths::ConvertRelativePathToFull可以将相对路径转成绝对路径. 在Andoird端,就麻烦些.可模仿UE4源码中AndroidFile.Cpp转换相 ...

  3. 洛谷P1120小木棍&lbrack;DFS&rsqb;

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...

  4. &lbrack;原创&rsqb;cocos2d-x研习录-第二阶 概念类之摄相机类&lpar;CCCamera&rpar;

    在Cocos2D-x中,每个CCNode都拥有一个摄像机类CCCamera.只有通过CCCamera,CCNode才会被渲染出来.当CCNode发生缩放.旋转和位置变化时,都需要覆盖CCCamera, ...

  5. django-url调度器-中级篇

    在初级篇中,我们接触了: 1.url 的简单编写 2.两种传参的方式 3.捕获的参数总是字符串 4.为视图设置默认参数 …… 在中级篇中将更进一步. 包含其它的URLconfs 当网站非常大的时候,将 ...

  6. 为何学习matplotlib-【老鱼学matplotlib】

    这次老鱼开始学习matplotlib了. 在上个pandas最后一篇博文中,我们已经看到了用matplotlib进行绘图的功能,这次更加系统性地学习一下关于matplotlib的功能. matlab由 ...

  7. CentOS 上安装 nodejs v11&period;0&period;0

    下载 nodejs 淘宝 nodejs 镜像地址:https://npm.taobao.org/mirrors/node wget 命令下载: wget https://npm.taobao.org/ ...

  8. 【IntelliJ 】IntelliJ IDEA 2017激活码

    CNEKJPQZEX-eyJsaWNlbnNlSWQiOiJDTkVLSlBRWkVYIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  9. 通过纯代码方式发布WCF服务

    网络上搜索WCF服务,一般是寄宿在IIS,通过WebConfig方式配服务地址,接口类型等信息,但是对于我这样的懒人,目前项目在开发阶段,实在不愿意每次添加新服务就更新配置文件,于是使用了反射来加载服 ...

  10. 找到多个与名为&OpenCurlyDoubleQuote;Home”的控制器匹配的类型,如果为此请求&lpar;&OpenCurlyDoubleQuote;&lbrace;controller&rcub;&sol;&lbrace;action&rcub;&sol;&lbrace;id&rcub;”&rpar;提供服务的路由没有指定命名空间来搜索匹配此请求的

    参考文章: http://blog.csdn.net/chengmodelong/article/details/41890229 https://www.cnblogs.com/zgqys1980/ ...