java集合框架---hashSet和treeSet之无序单列集合

hashSet

hashSet采用的是hash表存储,本质是数组+链表的存储方式,根据不同的hash值存储到 相应的位置, 和hashMap的存储方式相同,但是hashSet是单列,hashMap是双列,hashSet不存储重复元素,所以hashSet存储的hashMap里面的健,因为键是不重复的. 对外表现的是无序的

public class SetDemo1 {

    public static void main(String[] args) {
        //set是不重复的
        //hashSet不存储重复元素,当存入一个数据时,会先判断这个存入数据的hashCode值是多少,如果hashCode值相等,会调用equals方法比较是否相同
        //当不相同的时候才存入集合中,hashSet底层是hashMap只不过是只用了健,没用值,因为键,是不允许重复的
        
        Set<Student> set = new HashSet<Student>();
            Student student1=new Student("张三",16);
            Student student2=new Student("李四",15);
            Student student3=new Student("李四",15);
            Student student4=new Student("王五",15);
                set.add(student1);
                set.add(student2);
                set.add(student3);
                set.add(student4);
        System.out.println(set);

    }
}

treeSet

TreeSet底层实现是二叉树,是红黑树 自平衡二叉树(avl树) TreeSet不可以出现重复元素,是有序的,

public class TreeSetDemo1 {
    public static void main(String[] args) {
        //TreeSet底层实现是二叉树,是红黑树 自平衡二叉树(avl树) TreeSet不可以出现重复元素,是有序的,
        // 必须实现conparable接口,根据数据的编码值排列 a,b,c,向TreeSet里面插入数据时,
        // 会调用compareTo()方法比较大小,如果是放入自定义类型的类,需要去重写实现comparable接口,重写compareTo方法
        Set treeSet = new TreeSet();
            treeSet.add("a");
            treeSet.add("b");
            treeSet.add("c");
            treeSet.add("a");
        System.out.println(treeSet);


    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值