Set集合
package com.alllist.list; import java.util.Iterator; import java.util.TreeSet; /** * Set 集合中的对象不按特点的方式排序,只是简单的把对象加入集合,但Set集合中不能包含重复对象 * Set集合由Set接口和Set接口的实现类组成 * Set接口继承了Collection接口,因此包含Collection接口的所有方法 * (Set 的构造有一个约束条件,传入的Collection对象不能有重复) * ----------------- * 1、Set 接口常用的实现类 有 HashSet 类 与 TreeSet类 * HashSet类实现Set接口,有哈希表支持,它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变,此类允许使用 null 元素 * 2、TreeSet类不仅实现了Set接口,还实现了 java.util.SortedSet 接口,因此,TreeSet类实现的Set集合在遍历集合时 * 按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对用TreeSet 类实现的Set集合中的对象进行排序。 * @author Administrator * */ public class UpdateStu implements Comparable<Object>{ // 创建类实现 Comparable接口 String name; long id; public UpdateStu(String name,long id) { // 构造方法 this.name = name; this.id = id; } /** * 存入TreeSet类实现的Set集合必须实现Comparable接口 * 该接口中的 compareTo(Object o)方法比较对象与指定对象的顺序 * 如果该对象小于‘等于或大于指定对象,则分别返回负整数、0或正整数 */ public int compareTo(Object o) { //需要实现的方法 UpdateStu upsu = (UpdateStu) o; int result = id > upsu.id ? 1 : (id == upsu.id ? 0 : -1); return result; } // 以下是 属性 的 setXXX 与 getXXX 方法 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 static void main(String[] args) { // 创建 UpdateStu 对象 UpdateStu stu1 = new UpdateStu("李同学" , 01011); UpdateStu stu2 = new UpdateStu("陈同学" , 01021); UpdateStu stu3 = new UpdateStu("王同学" , 01051); UpdateStu stu4 = new UpdateStu("马同学" , 01012); // TreeSet 类 TreeSet<UpdateStu> tree = new TreeSet<UpdateStu>(); // 向集合添加对象 tree.add(stu1); tree.add(stu2); tree.add(stu3); tree.add(stu4); // Set 集合中的所有对象的迭代器 Iterator<UpdateStu> it = tree.iterator(); System.out.println("Set 集合中的所有元素: "); //遍历集合 while (it.hasNext()) { UpdateStu stu = it.next(); System.out.println(stu.getId()+" "+stu.getName()); } // 截取排在 stu2 对象之前的对象 it = tree.headSet(stu2).iterator(); System.out.println("截取前面部分的结合:"); while(it.hasNext()){ UpdateStu stu = it.next(); System.out.println(stu.getId()+" "+stu.getName()); } // 截取排在 stu2 与 stu3 之间的对象 it = tree.subSet(stu2, stu3).iterator(); System.out.println("截取中间部分的结合:"); while(it.hasNext()){ UpdateStu stu = it.next(); System.out.println(stu.getId()+" "+stu.getName()); } } }