戚权20201009

知识点

1set

无序性,不可重复性的数据

1.1元素添加过程:(以HashSet为例)

向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值,此哈希值接着通过某种算法计算出在HashSet底层数组中的存放位置(即为:索引位置),判断数组此位置上是否已经元素:如果此位置上没其他元素,则元素a添加成功。 —>情况1如果此位置上其他元素b(或以链表形式存在的多个元素,则比较元素a与元素b的hash值:如果hash值不相同,则元素a添加成功。—>情况2如果hash值相同,进而需要调用元素a所在类的equals()方法: equals()返回true,元素a添加失败。equals()返回false,则元素a添加成功。—>情况2

1.2常用方法

Set接口中没额外定义新的方法,使用的都是Collection中声明过的方法。

1.3存储对象所在类的要求

要求:向Set(主要指:HashSet、LinkedHashSet)中添加的数据,其所在的类一定要重写hashCode()和equals()
要求:重写的hashCode()和equals()尽可能保持一致性:相等的对象必须具有相等的散列码

  • 重写两个方法的小技巧:对象中用作 equals() 方法比较的 Field,都应该用来计算 hashCode 值。

2TreeSet

1.1使用说明

  1. 向TreeSet中添加的数据,要求是相同类的对象。
  2. 两种排序方式:自然排序(实现Comparable接口 和 定制排序(Comparator)

1.2常用的排序方式

1.自然排序中,比较两个对象是否相同的标准为:compareTo()返回0.不再是equals().
2.定制排序中,比较两个对象是否相同的标准为:compare()返回0.不再是equals().

3Collections

java.util.Collections 是 java 提供的一个集合操作的工具类。

  • 如果提供给它们的集合或类对象为null,则此类的方法都抛出一个 NullPointerException static fifields
static final List EMPTY_LIST;//空List,不可变 
//public static final List EMPTY_LIST = new EmptyList<>(); 
static final Map EMPTY_MAP ; //空Map,不可变 
//public static final Map EMPTY_MAP = new EmptyMap<>(); 
static final Set EMPTY_SET ; //空Set,不可变 
//public static final Set EMPTY_SET = new EmptySet<>();

4泛型

4.1泛型的概念

所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时确定(即传入实际的类型参数,也称为类型实参)。

4.2自定义泛型类、泛型接口、泛型方法

  • 类的内部结构就可以使用类的泛型
  • 静态方法中不能使用类的泛型。
  • 泛型方法:在方法中出现了泛型的结构,泛型参数与类的泛型参数没任何关系。
  • 泛型方法,可以声明为静态的。原因:泛型参数是在调用方法时确定的。并非在实例化类时确定。

总结:

今天的课程结束是集合,感觉集合不是特别的复杂,而是量大和重在理解,需要记忆的知识点有很多,还需要很多时间去巩固。

标签

评论

this is is footer