Java进阶第三章

顺序容器

1.人机交互部分是指输入输出,业务逻辑部分是指对输入的处理。我们要避免让人机交互和业务逻辑混杂在一个程序中,写成一个程序是初学者的思维。我们要让这两部分分开,比如我们的UI和后端,是分开的。
2.容器类在定义的时候包括两个类型,一个是容器类型诸如ArrayList等等,一个是元素类型String等等(注意:容器类的类名就是容器类型名)。容器类是用来存放规定类型元素的类,可以存放任意数量的元素,元素是通过类的对象来存储的,比如 “对象.add(s)” 、"对象.size()"具体如何使用见下面的实例。

(我猜测是在定义容器类得时候,类里面有两个成员函数,一个是public void add(s),是用来添加元素的。一个是用来记录元素个数的public int size(),所以实例里面的notes.add(s)和notes.size()就好解释了。)
在这里插入图片描述
在这里插入图片描述
3.对于普通类型的数组比如,“ int[] a=new int[10]; ” ,创建出来以后,数组a的10个元素都是整数,并且初始值被默认赋值为0;对于普通的数组,其定义的数组变量只是数组的管理者,而非所有者,可以进行管理权的赋予,两个数组变量共同管理一个数组。如果数组的类型是类,那么该数组为对象数组,所以我们分析最典型的对象数组:字符串数组, 此外我们之前在基础讲里面学过,字符串变量也只是字符串对象的管理者,而非所有者。“ String[] b=new String[10]; ”,创建出来以后,10个元素就是10个字符串变量,也是10个字符串对象的管理者,但是这10个字符串对象还没有被定义,所以10个元素都是null,这里的null不是指字符串“null”,而是java系统关键字表示管理的对象 “不存在” 的意思。必须给b[0]到b[9]手动赋值之后才不是null了,才可以进行后续的操作。

for-each循环

4.对于一般类型的的数组,for-each循环,只能遍历数组然后输出,但是不能给数组元素进行赋值(只能读不能写)。 但是对于对象数组,就有区别了,是可以在for-each循环里,对对象数数组进行操作的,具体例子如下图所示。
在这里插入图片描述
在这里插入图片描述
5.不仅仅对于数组可以用for-each循环(一般类型的数组可以遍历,对象数组可以遍历和修改),对于容器类也是可以使用For-each循环的,如下例子所示:
在这里插入图片描述
6.容器类定义了对象之后是可以直接使用的,增删查都可以。我们之前需要的是记事本类,每一个记事本的对象里面都包含了一个容器对象,所以我们在设计记事本的时候有容器类对象的创建过程。
7.★★★容器类定义了容器对象之后,通过对象利用add成员函数进行了存储,那么我们在读取容器内容的时候,除了可以使用for-each循环,我们还可以直接System.out.println(这个容器对象)来输出,输出的时候呆着方括号,表示这是一个容器;当然也可以用前面使用过的方法,先定义一个字符串数组,然后利用内置函数,把容器对象的内容传给字符串数组,然后再输出。

Set集合容器

8.ArrayList是容器类型之一,称为顺序容器;HashSet也是容器的类型之一,成为集合容器(定义容器对象时后面也要跟<元素类型>);顺序容器的存储就是按照顺序排列的,而集合容器是不会出现重复的存储对象的,如果后面的存储对象和前面的相同,则前面的会自动消失,而存下后面的这个(其实在集合容器中是没有顺序这个说法的)。
9.了解:可以利用for-each或System.out.println(容器对象),直接来输出容器对象存储内容的原因是因为类里面有一个固定形式的成员函数 “ public String toString() { return “ ”+i} ,自动调用了这个成员函数之后,就可以直接输出了。

Hash散列表

10.我们介绍一种新的特殊的容器类型,HashMap,一般称之为散列表,定义对象的时候也要加行元素类型,一般散列表的元素类型分为Key和Value两个关键量,分别对应不同的数据类型。则一般格式为“(private) HashMap<Key,Value> 对象名=new HashMap<Key,Value>(); "。解释: 定义成员变量时就要加private,直接在主函数中使用就不用加;散列表是一种数据结构,表示一个关键字Key对应一个量Value,比如一个 Integer 对应一个String,注意Key和Value不能是int、double等基本类型,因为面向对象,所以必须是对应的包裹类型,int对应的包裹类型是Integer,double对应的包裹类型是Double。
11.具体实例,分析都已经备注好了:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值