黑马程序员技术交流社区

标题: 非常重要的SET集合知识点,特别容易混淆,耐住性子看。 [打印本页]

作者: xiaoaonuanhu    时间: 2015-12-14 21:24
标题: 非常重要的SET集合知识点,特别容易混淆,耐住性子看。
set:无序,不可以重复元素。
1.hashset
    数据结构是哈希表,线程是非同步的。
    保证元素唯一性的原理:判断元素的hashcode值是否相同。
    如果相同,还会继续判断元素的equals方法,是否为true。

2.treeset
    可以对set集合中的元素进行排序。
    底层数据结构是二叉树,保证元素唯一性的依据。
    1)如果传入的是字符串等简单元素,(按照名称,从a-z,从0-9.。。。。)
    2)如果传入的是对象元素。就需要复写比较方法。




class TreeSetDemo
{
//..........main方法
    {
        //.....新建一个TreeSet对象ts
        //当ts中存入数据的的时候,会自动调用已经复写好的compareTo方法,
        //因为Student实现了comparable接口,强制执行此方法。


        ts.add(new Student("lisi01",33));
        ts.add(new Student("lisi004",35));


        //.....创建取出对象的迭代器即可。
    }
}
class Student implements Comparable//该接口强制让学生具备比较性。
{
    //......定义属性的动作
    //复写比较方法compareTo
    public int compareTo(Object obj)
    {
        if(!(obj instanceof Student))
        {
            thorw new RuntimeException("不是学生对象");
        }
        Student s = (Student)obj;
        if(this.age>s.age)
            return 1;
        if(this.age==s.age)
            //如果确认年龄相等就是同一个人,就直接返回0.
//return =0;
//可是,如果年龄相同,还要判断姓名,就需要再判断一次
//用名字排序,字符串自动实现comparable接口。
return this.name.compareTo(s.name);
        return -1;
    }
}


作者: 562181817    时间: 2015-12-14 23:27
很有用的知识点  赞一个!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2