zoukankan      html  css  js  c++  java
  • 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());
    		}
    	}
    }
    

      

  • 相关阅读:
    [JSOI2009] 游戏
    CF1148H Holy Diver
    [提高组集训2021] 模拟赛3
    CF1458F Range Diameter Sum
    [游记] CSP2021
    CF1396E Distance Matching
    CF1396D Rainbow Rectangles
    【LeetCode】1. 两数之和
    【随笔】开通博客园过程
    MyISAM与InnoDB的区别是什么?
  • 原文地址:https://www.cnblogs.com/spadd/p/4174813.html
Copyright © 2011-2022 走看看