Java开发知识之Java中的集合Set接口以及子类应用

本文深入探讨Java中的Set接口及其子类HashSet和TreeSet的应用。Set集合不允许重复元素,HashSet使用哈希表存储,不保证顺序;TreeSet则保证元素按自然顺序或自定义比较器排序。文章详细解释了如何实现Comparable接口进行自定义排序。

---恢复内容开始---

            Java开发知识之Java中的集合Set接口以及子类应用

一丶Set接口以及作用

  在上一讲.我们熟悉了接口的实现图.以及自己各有的子类.

  List接口主要存储的数据是可以重复的.并且一个是动态数组 (ArrayList) 一个是链表操作(LinedList)

Set接口:

  Set集合主要的作用就是 Set集合中的对象,不按照特定的方式排序.只是简单的把对象加入到集合中,但是最重要的一点就是.Set集合中不能包含重复的对象.Set集合是个接口,实现了Collection接口.因此Collection接口中的所有方法.Set接口中都要.

二丶Set接口的具体实现类.

  HashSet 跟 TreeSet

两个类分别的作用:

  HashSet:

    HashSet类,实现了Set接口.是由哈希表(HashMap 实例.也就是对象支持的),他不保证Set的迭代顺序.

特别的是他不保证这个顺序是恒久不变的.这个类可以使用Null元素.

  TreeSet:

    TreeSet不仅实现了Set接口,还是先了Java.utio.SortedSet接口,因此TreeSet类实现的Set集合.

在遍历集合的时候.会按照自然顺序递增排序.也可以按照指定的比较器的递增排序.

总结:

    总结来说.两个类一个类是不保证顺序的.一个类是可以按照顺序遍历或者迭代的.(遍历跟迭代一个意思)

1.TreeSet类中的方法

  

firset方法.返回Set集合中第一个元素.或者最低的元素.

last()方法, 返回Set集合中最后一个元素.或者最高的元素.

compareator():就是返回比较器.如果自然排序.就返回null

以上方法就是返回一个新的Set集合. 可以范围返回. 也可以之间返回.

2.使用TreeSet. 

  1.建立一个类.实现Comparable泛型接口

  2.此类重写接口中的compareTo方法.

  3.方法中比较.id. 谁大返回谁.

public  class Student implements Comparable<Object> {

    String name;
    int id;
    public Student(String name,String id) {
        // TODO 自动生成的构造函数存根
        this.name = name;
        this.id  = Integer.parseInt(id);
    }

    
    public  int compareTo(Object o) {
        // TODO 自动生成的方法存根
        Student stu = (Student)o;
        int result = this.id > stu.id ? 1:(this.id ==  stu.id  ? 0 : 1);
        return 0;
    }
  // 以下提供SetGet方法即可,这里不再写了.
}

实现了compareTo方法. 并且判断id. 如果id > 传入对象的Id. 那么就返回1,否则判断是否相等.相等返回0.否则返回1

PS: 这里实现Compareable<>接口的时候.里面需要传入Object

使用TreeSet类.

  使用TreeSet就是将对象存入TreeSet集合中,但是前提就是必须我们的对象必须是上面实现了Compareable<Object>接口的对象才可以. 并且重写了排序方法.这样我们的TreeSet集合才能使用.

  比如我们存储字符串

        //1.使用add方法.添加到集合中.
        tree.add("Apple");
        tree.add("banale");
        tree.add("boy");
        tree.add("Girl");
        //2.全部遍历
        System.out.println("开始进行全部遍历");
        java.util.Iterator<String> it = tree.iterator();
        while(it.hasNext()) {
            String str = (String)it.next();
            System.out.println("遍历结果 " + str);
        }

添加跟遍历

结果:

 

转载于:https://www.cnblogs.com/iBinary/p/9825320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值