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,当然你也可以自己运行看结果的