集合框架Set

Set不会按着顺序来排序而是按着录入的顺序排序并且不可以录入相同的数据

HashSet

  • HashSet是Set的典型实现,HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。其特点:不能保证元素的排列顺序;不是同步的,不是线程安全;集合值可以是null。
 public void test04() {
        Set<String> set = new HashSet<>();
        for (int i = 0; i < 5; i++) {
            set.add("wzl" + (i + 1));
        }
        System.out.println(set);
        for (String name : set) {
            System.out.println(name);
        }
    }
//这条数据的顺序不是按着数字顺序来排序的 而是按着for循环录入的顺序来排的

LinkedHashSet类

  • LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起 来像是以插入顺序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。
public void test02() {
        Set set = new LinkedHashSet();
        byte a = 1;
        short b = 2;
        int c = 3;
        long d = 4L;
        double e = 5.0d;
        float f = 6.0f;
        char g = 'a';
        boolean h = false;
        set.add(a);
        set.add(b);
        set.add(c);
        set.add(d);
        set.add(e);
        set.add(f);
        set.add(g);
        set.add(h);
        set.add(a);
        System.out.println(set);
    }

TreeSet类

  • TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。向TreeSet中加入的应该是同一个类的对象。

    TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0。向TreeSet中添加的应该是同一个类的对象,且最好是不可变对象。
     

     public void test(){
            Set<Book> books = new TreeSet<>();
           
            books.add(new Book("浮城谜事", "娄烨", 35, 150));
            books.add(new Book("邪不压正", "姜文", 35, 150));
            books.add(new Book("推拿", "娄烨", 33, 150));
            books.add(new Book("让子弹飞", "姜文", 33, 150));
            books.add(new Book("颐和园", "娄烨", 35, 180));
            books.add(new Book("一步之遥", "姜文", 35, 180));
            Iterator<Book> it = books.iterator();
            while (it.hasNext()){
                Book book = it.next();
                System.out.println(book);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值