黑马程序员_Java集合总结(二)
来源:互联网 发布:双色球彩神通软件 编辑:程序博客网 时间:2024/05/21 08:37
---------------------- android培训、java培训、期待与您交流! ----------------------
2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
二、Comparable接口和Comparator接口
在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer等Java内建类实现Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable接口的类、或者自定义的类,可以通过Comparator接口来定义自己的比较方式。
Comparable接口
在java.lang包中,Comparable接口适用于一个类有自然顺序的时候。假定对象集合是同一类型,该接口允许把集合排序成自然顺序。
int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值
利用Comparable接口创建自己的类的排序顺序,只是实现compareTo()方法的问题。通常就是依赖几个数据成员的自然排序。同时类也应该覆盖equals()和hashCode()以确保两个相等的对象返回同一个哈希码。
Comparator接口
若一个类不能用于实现java.lang.Comparable,或者不喜欢缺省的Comparable行为并想提供自己的排序顺序(可能多种排序方式),可以实现Comparator接口,从而定义一个比较器。
(2)boolean equals(Object obj): 指示对象obj是否和比较器相等。
三、泛型
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展。
现在定义泛型来完成扩展。
泛型类定义的泛型,在整个类中有效。如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
为了让不同方法可以操作不同类型,而且类型还不确定。
那么可以将泛型定义在方法上。
特殊之处:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
? 通配符。也可以理解为占位符。
泛型的限定;
<? extends E>: 可以接收E类型或者E的子类型。上限。
<? super E>: 可以接收E类型或者E的父类型。下限
---------------------- android培训、java培训、期待与您交流! ----------------------
一、set(集)
特点;里面的数据不能有重复 储存的顺序不能确定 索引不能访问其中具体数据
HashSet与TreeSet区别:
2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例
二、Comparable接口和Comparator接口
在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer等Java内建类实现Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable接口的类、或者自定义的类,可以通过Comparator接口来定义自己的比较方式。
Comparable接口
在java.lang包中,Comparable接口适用于一个类有自然顺序的时候。假定对象集合是同一类型,该接口允许把集合排序成自然顺序。
int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值
利用Comparable接口创建自己的类的排序顺序,只是实现compareTo()方法的问题。通常就是依赖几个数据成员的自然排序。同时类也应该覆盖equals()和hashCode()以确保两个相等的对象返回同一个哈希码。
Comparator接口
若一个类不能用于实现java.lang.Comparable,或者不喜欢缺省的Comparable行为并想提供自己的排序顺序(可能多种排序方式),可以实现Comparator接口,从而定义一个比较器。
(1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值
如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值
(2)boolean equals(Object obj): 指示对象obj是否和比较器相等。
三、泛型
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展。
现在定义泛型来完成扩展。
泛型类定义的泛型,在整个类中有效。如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
为了让不同方法可以操作不同类型,而且类型还不确定。
那么可以将泛型定义在方法上。
特殊之处:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
? 通配符。也可以理解为占位符。
泛型的限定;
<? extends E>: 可以接收E类型或者E的子类型。上限。
<? super E>: 可以接收E类型或者E的父类型。下限
---------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员_Java集合总结(二)
- 黑马程序员_Java集合总结(一)
- 黑马程序员_Java集合总结(三)
- 黑马程序员_Java基础_集合框架(二)_15
- 黑马程序员_java基础二(线程和集合)
- 黑马程序员_java的集合二_08
- 黑马程序员_java API总结(String、集合)
- 黑马程序员_java 集合框架学习总结
- 黑马程序员_JAVA集合类函数总结
- 黑马程序员_java集合框架简单总结
- 黑马程序员_Java基础:集合总结
- 黑马程序员_java集合
- 黑马程序员_java集合
- 黑马程序员_Java集合
- 黑马程序员_java集合
- 黑马程序员_java 集合
- 黑马程序员_JAVA:集合
- 黑马程序员_java多线程的一些总结(二)
- 数据结构之栈的应用----算术表达式的实现
- 使用 IAR for 51 实验 LED 灯模拟二进制加减法.
- Android自动化测试解决方案
- 数据结构之栈的应用----迷宫求解
- OpenCV2.4 例程解析一
- 黑马程序员_Java集合总结(二)
- web前台时间控件
- C#在VisualStudio中操作SQL数据库文件
- 通过编写模块化代码提高软件可移植性
- 网上下载文件
- socket实现ping命令(控制台)
- MAXCC的值
- 输入10个正数,求最大值、最小值、平均值。
- Android自动化测试初探