集合类概述2

Set集合

set集合中的对象不按特定的方式排序,只简单地把对象加入集合中,但set集合中不能包含重复对象。set集合有set接口和set接口的实现类组成。set接口继承了Collection接口,因此包含了Collection接口的所有方法。

set接口常用的实现类有HasSet类和TreeSet类。

HasSet类实现了set接口,由哈希表(实际上是一个HashMap实例支持)。它不仅保证Set的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用null元素

TreeSet类不仅实现了Set接口,还实现了java.util.SoreedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序。

TreeSet类增加的方法

方法                              功能描述

first()                             返回此Set中当前第一个元素

last()                              返回此Set中当前最后一个元素

comparator()                返回对此Set中的元素进行排序的比较器,如果此Set使用自然排序,则返回null

headSet(E toElement)   返回一个新的Set集合,新集合包含toElement之前的所有对象

subSet(E fromElement, E fromElement)返回一个新的Set集合,包含fromElement对象与fromElement对象之间的所有对象

tailSet(E fromElement)  返回一个新的Set集合,新集合包含对象fromElement之后的所有对象

public class Set集合 implements Comparable<Object>{//创建类实现Comparable接口
  String name;
  long id;
  public Set集合(){}//无参构造
  public Set集合(String name,long id){//有参构造
      this.name = name;
      this.id = id;
  }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public int compareTo(Object o){
      Set集合 set集合 = (Set集合)o;
      int result = id>set集合.id?1:(id==set集合.id?0:-1);//参照代码说明
        return result;
    }
    public static void main(String[] args) {
        Set集合 set1 = new Set集合("李同学",010101);
        Set集合 set2 = new Set集合("赵同学",010102);
        Set集合 set3 = new Set集合("钱同学",010103);
        Set集合 set4 = new Set集合("孙同学",010104);
        Set集合 set5 = new Set集合("周同学",010105);//创建Set集合  对象
        TreeSet<Set集合>treeSet = new TreeSet<>();
        treeSet.add(set1);//向treeSet数组里添加对象
        treeSet.add(set2);
        treeSet.add(set3);
        treeSet.add(set4);
        treeSet.add(set5);
        Iterator<Set集合>iterator = treeSet.iterator();//遍历集合
        System.out.println("Set集合中所有的元素");
        while (iterator.hasNext()){
            Set集合 set集合 = iterator.next();
            System.out.println(set集合.getId()+""+set集合.getName());
        }
        iterator = treeSet.headSet(set2).iterator();//截取排在set2对象之前的对象
        System.out.println("截取前面的集合:");
        while (iterator.hasNext()){//遍历集合
            Set集合 set集合 = iterator.next();
            System.out.println(set集合.getId()+""+set集合.getName());
        }
        iterator = treeSet.subSet(set2,set3).iterator();//截取排在set2与set3之间的对象
        System.out.println("截取中间的部分的集合");
        while (iterator.hasNext()){//遍历集合
            Set集合 set集合 = iterator.next();
            System.out.println(set集合.getId()+""+set集合.getName());
        }
    }
}
结果:

结果写不下了,想看结果的话,请看集合类概述3,当然你也可以自己运行看结果的

猜你喜欢

转载自blog.csdn.net/qq_41934990/article/details/80199909