黑马程序员——关于集合(上)
来源:互联网 发布:知乎和天涯哪个真实 编辑:程序博客网 时间:2024/05/18 15:03
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
Set接口,无序集合。所谓无序,就是指存入和取出的顺序不一定一致。它主要包含两种:
1、HashSet类:底层的数据结构是哈希表,由HashMap实现。不保证set 的迭代顺序,特别是它不保证该顺序恒久不变。
那么怎样排除HashSet中的重复对象呢?通过元素的两个方法,hashCode()和equals()来完成。如果元素的HashCode值相同,才会判断equals是否为true;如果元素的HashCode值不同,那么不会调用equals方法。
2、TreeSet类:底层的数据结构是二叉树,可以实现对Set集合中的元素进行排序,使用compareTo方法排除重复对象和对对象排序。
TreeSet的排序的功能,每放入一个对象都会把传入的对象和Set中的对象进行比较,然后进行排序。(这种方法效率不高,不适用于快速放入对象。)
一般情况可以用HashSet进行重复对象的筛选。如果想进行排序,用HashSet实例重新构造出来一个TreeSet实例。
TreeSet排序有两种方式:
第一种方式是让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法,这种也称为元素的自然顺序,也叫做默认排序。比如:
class Student implementsComparable//该接口强制让学生具备比较性。{
}
compareTo方法通过返回值判断前后两个元素的前后顺序。
第二种方式是当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数;定义一个类,实现Comparator接口,覆盖compare方法。比如:
class MyCompare implementsComparator{//定义实现Comparator接口的类
}
当以上两种排序都存在时,以比较器为主。
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
- 黑马程序员——关于集合(上)
- 黑马程序员——集合(上)
- 黑马程序员——集合(上)
- 黑马程序员—集合(上)-Collection
- 黑马程序员———集合(上)
- 黑马程序员——JAVASE-集合(上)
- 黑马程序员——Java基础---集合类(上)
- 黑马程序员——Java基础---集合类(上)
- 黑马程序员——java基础---集合(上)
- 黑马程序员——集合知识概括(上)
- 黑马程序员——Java之集合(上)
- 黑马程序员《集合(上)》
- 黑马程序员-集合 (上)
- 黑马程序员——关于集合(下)
- 黑马程序员--集合(上)
- 黑马程序员—集合
- 黑马程序员—集合
- 黑马程序员—集合
- ORACLE _11G_ R2
- poj 1273 Drainage Ditches(最大流,E-K算法)
- 黑马程序员——异常
- 黑马程序员——关于多线程
- 黑马程序员——多线程和单例设计模式
- 黑马程序员——关于集合(上)
- 黑马程序员——关于集合(下)
- 黑马程序员——透过几个实用类谈查阅API文档
- 黑马程序员——关于IO流的分类整理
- 黑马程序员——IO流中常见流的用法
- 黑马程序——java中的测试工具——Junit
- 黑马程序员——JDK1.5的几个新特性
- 黑马程序员——关于枚举
- hdu 1242 Rescue