Java学习笔记(2)

Java集合

为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。

集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。

表 1 Java集合接口的作用

接口名称作 用
Iterator 接口集合的输出接口,主要用于遍历输出(即迭代访问)Collection 集合中的元素,Iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实现类Collection时就必须实现 Iterator 接口。
Collection 接口是 List、Set 和 Queue 的父接口,是存放一组单值的最大接口。所谓的单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操作。
Queue 接口Queue 是 Java 提供的队列实现,有点类似于 List。
Dueue 接口是 Queue 的一个子接口,为双向队列。
List 接口是最常用的接口。是有序集合,允许有相同的元素。使用 List 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,与数组类似。
Set 接口不能包含重复的元素。
Map 接口是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value 的形式保存。

对于 Set、List、Queue 和 Map 这 4 种集合,Java 最常用的实现类分别是 HashSet、TreeSet、ArrayList、ArrayDueue、LinkedList 和 HashMap、TreeMap 等。表 2 介绍了集合中这些常用的实现类。

表 2 Java集合实现类的作用

类名称作用
HashSet为优化査询速度而设计的 Set。它是基于 HashMap 实现的,HashSet 底层使用
HashMap来保存所有元素,实现比较简单
TreeSet实现了 Set 接口,是一个有序的 Set,这样就能从 Set 里面提取一个有序序列
ArrayList一个用数组实现的 List,能进行快速的随机访问,效率高而且实现了可变大小的数组
ArrayDueue是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素
LinkedList对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有 addFirst()、addLast()、getFirst()、getLast()、removeFirst() 和 removeLast() 等方法,能把它当成栈(Stack)或队列(Queue)来用
HsahMap按哈希算法来存取键对象
TreeMap可以对键对象进行排序

反射注解

Annotation是从JDK5.0开始引入的新技术。

• Annotation的作用:

– 不是程序本身,可以对程序作出解释。(这一点,跟注释没什么区别)

– 可以被其他程序(比如:编译器等)读取。(注解信息处理流程,是注解和注释的重大区别 。如果没有注解信息处理流程,则注解毫无意义)

• Annotation的格式:

– 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如: @SuppressWarnings(value=“unchecked”)。

• Annotation在哪里使用?

– 可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信 息,我们可以通过反射机制编程实现对这些元数据的访问。

二、注解分类

  1. 内置注解

• @Override – 定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方 法声明打算重写超类中的另一个方法声明。

• @Deprecated – 定义在java.lang.Deprecated中,此注释可用于修辞方法、属性、类 ,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。

• @SuppressWarnings

– 定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息 。

– 与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:

– @SuppressWarnings(“unchecked”)

– @SuppressWarnings(value={“unchecked”, “deprecation”})

  1. 自定义注解

• 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口

• 要点:

– @interface用来声明一个注解

• 格式为:

– public @interface 注解名 {定义体}

– 其中的每一个方法实际上是声明了一个配置参数。

– 方法的名称就是参数的名称

– 返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum) – 可以通过default来声明参数的默认值。

– 如果只有一个参数成员,一般参数名为value

• 注意:注解元素必须要有值。我们定义注解元素时,经常使用空字符串、0作为默认值。 也经常使用负数(比如:-1)表示不存在的含义

  1. 元注解

• 元注解的作用就是负责注解其他注解。

Java定义了4个标准的 meta-annotation类型,它们被用来提供对其它 annotation 类型作说明。

• 这些类型和它们所支持的类在java.lang.annotation包中可以找到

– @Target

– @Retention

– @Documented

– @Inherited

三、使用反射机制读取注解信息

初步实现注解的读取

读取注解=注解的建立+读取注解的实现

此处实现的是学生的相关注解的实现:

1.建立SxtStudent类,包含基本信息,并get,set;

2.建立SxtTable注解,包含一个值,记录表格的名字;

3.建立SxtField注解,包含SxtStudent类的基本属性的属性,记录表格基本信息的类型;

4.建立Demo类,进行测试,输出SxtStudent类的全部注解,输出SxtStudent的指定注解,输出SxtStudent类的所有属性和指定属性的注解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尽 头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值