(集合,泛型,数据结构)day07javaSE基础查漏补缺

(集合,泛型,数据结构)

1.子类怎么访问父类的所有方法和成员?

super

2.集合和数组的区别

1)数组可以存储基本类型和引用类型,集合只能存储引用类型。

2)数组长度不可变,集合长度可变。

3.看jdk文档时,要找类或接口,先找他的包。

4.集合:有序,无序,重复,不重复,有索引,没索引方法

数组,链表,哈希表

5.集合学习方法:学习顶层collection,使用底层(实现类)。

6.如果集合中有重复的元素,remove:只移除第一个(按顺序)。

7.迭代器Iterator接口:通用的取出集合中的元素的方法。

iterator()返回:Iterator接口的实现类对象

----迭代器只能便利一次,因为指针还是最后的位置。再次使用,要重新new迭代器对象。

8.it.next会出现–没有元素异常。

9.迭代器的—并发修改异常,集合的迭代遍历和修改同时发生。

修改元素之后,再取时才会抛出:并发修改异常

解决方法,使用迭代器的修改方法:iterator.remove。

(修改元素内容不会抛异常)

10.序列化: 字节 ——> 对象

11.增强for循环底层就是迭代器(语法糖),所有也有并发修改异常。使用的时候要注意。

12.增强for循环快捷键:集合名.for+回车

13.for增强是定义的引用接收了数据,这时再修改数据,源数据不会被改变。

14.设计模式:迭代器模式----提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。

15.内部接口是什么

在类或接口中定义的接口,使用时需要实现该接口,比如匿名内部类.

16.泛型和Object的区别和好处?

不写泛型,那默认就是Object。

元素默认是Object类型,什么类型的数据都可以存储,访问元素特有方法时得需要向下转型。导致数据类型转换有可能错误

泛型的好处:是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

17.泛型是一种伪泛型(语法糖),只是在编写代码过程中使用,在class文件中,并没有泛型的概念。

18.定义泛型的类–工具类上用的很多。

19.泛型可以写多个,泛型都是引用数据类型。

在调用或者创建的时候,可以直接定义泛型了。

null也可以传。

泛型没有多态,而泛型只是一个标签(如果要传泛型的父类或子类,需要通配符)

20.泛型通配符:?—只能在方法集合传递参数的时候使用,不能再定义对象的时候使用。

ArrayList<?> list = new ArrayList();是错误的。

22.泛型是啥必须传啥,要不然会报错,没有向上转型这一说。

如果想向上转型,要使用–通配符–:

上限限定?-- extend Object —只能传Object类型和他的子类。

下限限定–?super Sun —只能传Sun类型和他的父类。

-----数据结构------

23.栈:先进后出,—弹匣

24.队列:先进先出,–排队

25.数组:查询快,增删慢

  1. 开辟连续存储空间,查找元素快:通过索引,可以快速访问指定位置的元素
  2. 增删元素慢:数组长度不可变,需要重新创建新的数组,并且对旧数组数据进行复制

26.链表:查询慢,增删块

1.多个结点之间,通过地址进行连接
2. 查找元素慢: 想查找某个元素,需要通过连接的节点,依次向后查找指定元素。
3. 增删元素快

单向链表,和双向链表(有序)

LinkedHashMap

单向链表链表中的每一个元素,也叫节点,由数据源和指针域组成。

双向链表(有序)由指针域+数据源+指针域组成。

27.红黑树:类似平衡的二叉有序树(查找树)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-axIJ5Dqf-1637932744085)(C:\Users\xiu\AppData\Roaming\Typora\typora-user-images\1637832205985.png)]

红黑树的红黑代表什么?

红黑数其实是一种伪2-3树,其中红代表3树,黑代表2树

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nu3PTBJW-1637932744087)(C:\Users\xiu\AppData\Roaming\Typora\typora-user-images\1637932332638.png)]

28.jdk主要的包介绍。

在这里插入图片描述

java.lang:包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。

  • java.awt:包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
  • java.applet:包含applet运行所需的一些类。
  • java.net:包含执行与网络相关的操作的类。
  • java.io:包含能提供多种输入/输出功能的类,通过数据流、序列化和文件系统提供系统输入和输出
  • java.util:包含一些实用工具类,包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
  • java.math:一些数学及科学计算相关的包,提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
    **- java.rmi:**Java远程方法调用,即Java RMI(Java Remote Method Invocation)是java编程语言里,一种用于实现远程过程调用的应用程序编程接口。
  • java.security:为安全框架提供类和接口。
  • java.sql:提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。

注:java.lang这个包会自动被导入,对于其中的类,不需要使用import

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值