Student类:name、age属性 
1 package com.bjpowernode.test01_set2_Comparable;
/*
* T: type
*/
public class Student implements Comparable<Student> {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
/*@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())//判断两个“对象”的类型是否相同。
return false;
Student other = (Student) obj; //向下转型
if (age != other.age)
return false;
if (name == null) { //避免出现NullPointerException异常
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}*/
/*
* 当前对象与参数对象相同时返回 : 0
* 当前对象 大于参数对象 时: 1 正数
* 当前对象 小于参数对象 时: -1 负数
*/
@Override
public int compareTo(Student s) {
//按年龄排序,如果年龄相同,按姓名排序
if(this.age == s.age){
//按姓名排序, 调用字符串的compareTo
return this.name.compareTo(s.name);
}
return this.age -s.age;
}

}
 TreeSet存储,遍历,排序输出
1 package com.bjpowernode.test01_set2_Comparable; import java.util.TreeSet;
/*
* TreeSet中存放元素,默认按自然排序的方式去除重复项,并进行排序的
* String和8种包装类中都指定自然排序方法:实现java.lang.Comparable接口,重写compareTo方法
* 自定义的类放入TreeSet时,也实现实现java.lang.Comparable接口,重写compareTo方法
*/
public class StudentTreeSetTest {
public static void main(String[] args) {
TreeSet<Student> tree = new TreeSet<>();
Student s = new Student("Mike", 18);
Student s1 = new Student("Join", 28);
Student s3 = new Student("Join", 18);
Student s4 = new Student("Smith", 18);
tree.add(s);
tree.add(s1);
tree.add(s3);
tree.add(s4);
System.out.println(tree.size());
System.out.println("姓名\t年龄");
for (Student stu : tree) {
System.out.println(stu.getName()+"\t"+stu.getAge());
}
}
}

集合-TreeSet-Comparable的更多相关文章

  1. Java——(四)Collection之Set集合TreeSet类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- TreeSet类 TreeSet是SortedSet接口的实现类,正如SortedSet名字所暗 ...

  2. Java集合--TreeSet详细解析

    目录 1.构造函数 2.增 3.删 4.比较器 总结 谈到TreeSet的特点,估计大家脑海里想到的都是:有序,不可重复,红黑树,基于Treemap实现,自定义排序等特点.这篇博客帮助大家从源码梳理下 ...

  3. 集合TreeSet的使用

    集合中的TreeSet是集合体系结构中的底层实现,是Collection的孙子,Set的儿子.TreeSet除拥有父接口的特点外,还有其自身的特点.下面就看看TreeSet的排序是怎么实现的.从它的构 ...

  4. 什么是泛型?,Set集合,TreeSet集合自然排序和比较器排序,数据结构-二叉树,数据结构-平衡二叉树

    ==知识点== 1.泛型 2.Set集合 3.TreeSet 4.数据结构-二叉树 5.数据结构-平衡二叉树 ==用到的单词== 1.element[ˈelɪmənt] 要素 元素(软) 2.key[ ...

  5. Java集合(一)--Comparable和Comparator

    Comparable: 是集合内部的方法实现的排序,只有一个方法 public interface Comparable<T> { public int compareTo(T o); } ...

  6. Java集合--TreeSet

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311268 第1部分 TreeSet介绍 TreeS ...

  7. 集合排序Comparable和Comparator有什么区别?

    Comparable和Comparator兄弟俩长得是真像.但是,需要注意下,使用中它们还是有不少区别的.下面,就一探究竟吧. 一.Comparator 做过集合排序的童鞋应该知道,可以使用Colle ...

  8. TreeSet集合

    TreeSet集合 TreeSet集合是一个依靠TreeMap实现的有序集合,内部存储元素是自动按照自然排序进行排列,所以如果想要保留存储时的顺序,那么就不建议使用TreeSet. TreeSet继承 ...

  9. TreeSet集合解析

    TreeSet是实现Set接口的实现类.所以它存储的值是唯一的,同时也可以对存储的值进行排序,排序用的是二叉树原理.所以要理解这个类,必须先简单理解一下什么是二叉树. 二叉树原理简析 假如有这么一个集 ...

  10. java基础33 Set集合下的HashSet集合和TreeSet集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

随机推荐

  1. AugularJS从入门到实践(一)

      前  言  前端    AngularJS是为了克服HTML在构建应用上的不足而设计的.(引用百度百科) AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.Angu ...

  2. TortoiseGit上传项目到github方法(超简单)

    Github是咱广大开发者用的非常多的项目版本管理网站,项目托管可以是私人的(private)或者公开的(public),私人的收费,一个月7美金.咱这里就只说我们个人使用的,一般都是代码对外开放的: ...

  3. oracle默认用户名及密码

    oracle默认用户名及密码(网摘) (1)user:           internal           password   :oracle     (2)user:           s ...

  4. Entity Framework Core 软删除与查询过滤器

    本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意 ...

  5. ES6 新增命令

    let               用来声明变量.它的用法类似于var,但是所声明的变量, 只在let命令所在的代码块内有效. 例: {var a=10; let b=20;}; console.lo ...

  6. Python基础之常用模块(一)

    模块本质就是一个.py文件,在安装目录下的lib文件夹下可以看到 模块分为三个部分:内置模块(存在于解释器中),第三方模块(lib文件夹下),自定义模块(自己定义的) 1.time模块 import ...

  7. Openfire3.9.1+jdk1.7导入到eclipse中

    Openfire3.9.1+jdk1.7导入到eclipse中 写这篇文章,也是记录一下自己几晚上的辛苦,因为作为新手在网上看了很多的资料,但是按照他们的我总是出不来,跟他们描述的不一致,可能是环境问 ...

  8. 回味Python2.7——笔记1

    一.基本知识 1.一个值可以同时赋给几个变量: >>> x = y = z = 0 # Zero x, y and z >>> x 0 >>> y ...

  9. Objective-c 多线程操作 自定义NSOperation 模拟下载

    写在前面 使用多线程下载图片,使用内存缓存和磁盘缓存. 这里只为理解NSOperation及其派生类 真要应用到APP中 请下载成熟的第三方库 效果 下载多张图片时可控制线程并发数 分析 自定义NSO ...

  10. centos7下安装PHP swoole扩展

    PHP的异步.并行.高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列, ...