ASP.Net+Android+IOS开发------期待与您交流
<集合框架>
<Set集合的使用及其方法>
* Set 集合中的方法和Collection是一致的
1. Set集合的特点
* Set集合中的存储的元素是不重复的
* Set无序集合(存储和取出的顺序),没有索引
* Set集合的取出方式
* 只有一种,迭代器
2. HashSet
* 无序,不重复
* 底层数据结构是 哈希表 桶装结构
* 确定元素唯一性的依据是,元素的hashCode()返回值,和equals()方法返回值
* 如果 对象的hashCode()返回值一样,并且equals方法返回值是真,HashSet判定是同一个元素
* 存储到HashSet中的自定义的对象,必须覆盖hashCode() 和 equals()方法
* HashSet先调用对象的hashCode()方法,如果一致,调用对象的equals比较,如果是true,不存储
3. TreeSet
* 底层数据结构是二叉树
* 存储自定义对象的时候
* JDK1.5 & JDK1.7 存储一个就出异常
* JDK1.6 存储一个,不出异常,2个以上就出异常
* 存储在集合内的对象,进行自然排序
* 对象必须具备比较性
下面是TreeSet集合的二叉树示意图:
* 当存储的自定义对象中的排序方式,不符合要求,不能去修改原始代码
* 需要改变当前对象的排序方式,让我们的集合TreeSet自己具备比较性
* TreeSet集合自己可以具备比较性,在new TreeSet对象的时候,构造方法中,传递一个比较器对象
* 这个比较器,必须实现Comparator接口,在TreeSet构造方法中,传递的参数是Comparator接口的
实现类对象
* 玩TreeSet,其实在玩比较器
* 存储的对象自己具备比较性,对象实现Comparable接口
* TreeSet自己具备比较性,自定义比较器类,实现Comarator接口
4. 模拟用户登录注册,名和密码
4.1 用户可以操作的界面,用控制台来替代
* 菜单选项,1 登录 2 注册
4.2 选择注册
* 提示输入用户名,密码,确认密码
* 输入信息完毕后,判断密码是否一致
* 去存储用户信息的集合中,找用户名
* 找到了,注册失败,返回注册吗,提示。。。用户名已经存在
* 找不到,注册成功,集合中存储用户名和密码,提示,,,,注册成功
4.3 选择登陆
* 提示输入用户名,密码
* 信息输入完毕后,到集合中,查找用户名和密码
* 查到了,登陆成功 提示。。。登陆成功
* 查询不到,登陆失败 提示。。。登陆失败
* TreeSet
* Exception in thread "main" java.lang.ClassCastException:类型转换异常
* cn.itcast.collection.Person cannot be cast to java.lang.Comparable
*
* 异常中文解释:Person类,不具备自然排序功能
* 如果Person类,实现了Comparable接口,这个就具备了自然排序
* Person类,不具备比较性
*
* 需要我们做的,就是Person类,实现Comparable接口,覆盖掉接口中的抽象方法,compareTo()
* compareTo()就是我们Person类的自然排序功能,如何给Person进行自然排序,排序后的结果是什么
* 完全取决于这个compareTo()方法
import java.util.*;
public class TreeSetDemo {
public static void main(String[] args) {
//method();
/*为什么 比较方法CompareTo()返回值是int
/CompareTo()比较的结果三种,负数 0 正数
* 前面小,返回负数
* 相等返回 0
* 前面大,返回正数
*/
System.out.println("你好".compareTo("我好"));
}
private static void method(){
TreeSet ts = new TreeSet();
//ts.add(new Person("lisi",23));
ts.add(123);
ts.add(432);
ts.add(2345);
ts.add(23);
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
ASP.Net+Android+IOS开发------期待与您交流
详细请查看:http://edu.csdn.net