java 面向对象编程-- 第15章 集合框架

时间:2023-03-08 15:13:44
java 面向对象编程-- 第15章 集合框架

1、  集合特点:元素类型不同、集合长度可变、空间不固定

2、  java中对一些数据结构和算法进行了封装即集合。集合也是一种对象,用于存储、检索、操作和传输对象。

3、  JCF(Java Collections Framework)是JavaSE中包含的由一组类和接口组成的Java集合框架,其主要功能是用来将存储的数据以某种结构组织,并以特定的方式来访问这些数据,其目标是提供一个处理对象集合的通用框架,减少程序员处理不同对象集合时的编码量。

4、  集合框架包含三个内容:接口、实现类、算法。

Collection是List和Set的父接口。

List的接口特点:线性,元素可以重复。

Set接口的特点:元素不可重复。

Map集合:一个元素包含两个对象(键对象和值对象),而且键不能重复。

5、  集合和数组的区别:

  • 集合中只能存放对象的引用,数组可以是基本类型,可以是引用类型;
  • 集合的长度可以随元素多少而变化,数组创建好后长度不能改变;
  • 集合算法比较丰富,可以省去开发者很多编码,数组算法有限。

6、  for循环遍历,只能用于List集合;迭代器方式(Iterator),得到迭代器的算法接口;for each遍历循环。

7、  List三个实现类的区别:

  • ArrayList:底层部分由数组实现,遍历速度快,中间插入或删除元素速度慢。
  • Vector:和ArrayList类似,底层也由数组实现,但它是线程安全的类,效率较低。
  • LinkedList:采用双向链接实现,存放于不连续的内存空间,每个元素除了存放数据外,还要存放上一个和下一个元素的地址。遍历速度慢,中间插入、删除速度快。

8、  Set实现类的区别:

  • HashSet:将元素按Hash码排列;
  • LinkedHashSet:将元素加入顺序排列;
  • TreeSet:可以将元素按指定规则进行排序。

9、  Map实现类的区别:

  • HashMap:元素按键对象的Hash码排列,线程不安全,允许null键和null值;
  • Hashtable:元素按键对象的Hash码排列,线程安全,不允许null键和null值;
  • TreeMap:元素按照指定的规则排列。

10、              Map接口的优势:便于查找(根据键对象,找到值对象,如果键不存在,返回null)。

11、              当我们需要将对象存入基于哈希算法的HashSet和HashMap中时,需要同时重写equals()方法和hashCode()方法,并且保证当两个对象用equals()方法比较结果为true时,这两个对象的hashCode()方法的返回值相等。

12、              实现了Comparable接口的类,可以实现自然排序。如果要自定义排序,就要使用Comparator接口。

13、              如果编写的类实现了Comparable接口,那么这个类应该重写compareTo()、equals()和hashCode()方法,保证CompareTo()和equals方法采用相同的比较规则,来比较两个对象是否相等。

14、              泛型:就是允许在定义类、接口时指定类型形式参数,这个类型形式参数将在声明变量、创建对象时确定(即传入的实际参数)。通过泛型将参数类型化以后,我们就可以强迫程序在编译期就检查从集合中取得的数据的类型,以达到数据安全的目的。