《数据结构和java集合框架》——第二章 接口和集合类
(虚线框代表接口类型,实线框里填写的是具体实现类)
集合按照其存储结构可以分为两大类,即单列集合Collection和双列集合Map
●Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序且不可重复
●Map:双列集合类的根接口,用于存储具有键(Key)、值(value)映射关系的元素。
一.重要概念
接口是抽象方法和常量的集合。接口中没有任何确定的方法,没有任何字段。因为接口中的所有方法都是抽象方法,所以方法标题中不需要使用abstract限定符。另外,接口中的所有方法都是公共的,因此方法标题中也不需要使用public限定符。
集合是由元素组成的对象
二.知识点
☺抽象类不能实例化,抽象方法的主要优点是增强了后代(子类)的一致性(在子类中方法的定义具有相同的标题)。☺如果一个类实现了一个接口,但是没有为接口的所有方法提供方法定义,那么这个类必然是抽象类。
☺比较对象时,==比较的是地址,而equals()比较的是对象内容
2.1 this关键字的用法
(1)this代表当前对象的一个引用。所谓当前对象,指的是调用类中方法或属性的那个对象
(2)this只能在方法内部使用,表示对“调用方法的那个对象”的引用。但要注意,如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。当前方法的this引用会自动应用于同一类中的其他方法。
(3)this不能用于静态方法。main方法也是静态的,所以this也不能用于main方法。
(4)可以使用this关键字调用重载构造方法。避免相同的初始化代码,智能在构造方法中用,并且必须位于构造方法的第一句。并且,除了构造器外,编译器禁止在其他任何地方中调用构造器
2.2 super关键字的用法
☺super只在子类中出现
super有三种用法
♣super.XXX——(XXX可以是类的属性)
从子类获取父类属性的值
♣super.XXX——(XXX可以是类中的方法名)
直接访问父类中的方法并调用
♣super();
直接调用父类的构造函数,括号里的内容根据所调用的某个构造函数的变化而改变
2.3 类和接口的关系
(1)一个接口可以扩充另一个接口
(2)一个类智能扩充一个其他的类。在Java语言中禁止多重继承(容易意义不明确)
(3)一个类可以实现多个接口
(4)如果一个类实现了接口中部分(但不是全部)的抽象方法,那么这个类必须声明为抽象类,并且因此不能实例化
2.4 Java原始数据类型
在Java语言中,有两种变量:原始变量和引用变量。原始变量保存原始数据类型:
boolean,char,byte,short,int,long,double,float。引用变量保存对对象的引用。
2.5 Integer类型转换
int i;
Integer myInt;
String s;
Object obj;
要获取 | 获取对象 | 示例 |
---|---|---|
Int | Integer | i = myInt.intValue |
Int | String | i = Integer.parseInt(s) |
Integer | String | myInt = new Integer(s) |
Integer | Object | myInt = (Integer)obj |
Integer | int | myInt = new Integer(i) |
Object | Integer | obj = myInt |
Object | String | obj = s |
String | int | s = Integer.toString |
String | Integer | s = myInt.toString() |
String | Object | s = (String)obj; |
重要代码
迭代器是允许以一致的方式对集合对象的元素进行访问的对象。每个实现Collection接口的类都有一个迭代器类,允许用户访问集合类中的每个元素。每个迭代器类必须至少实现如下Iterator接口
public interface Iterator{
Object next();
boolean hasNext();
void remove();
}