集合框架-TreeSet集合
时间:2021-10-23
本文章向大家介绍集合框架-TreeSet集合,主要包括集合框架-TreeSet集合使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 package cn.itcast.p5.treeset.demo; 2 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 import cn.itcast.p.bean.Person; 7 8 public class TreeSetDemo { 9 10 public static void main(String[] args) { 11 // TODO Auto-generated method stub 12 // demo1(); 13 TreeSet ts = new TreeSet(/*new ComparatorByName()*/);//比较器排序优先于person的自然排序,实际开发比较器常用,person一般会实现comparator接口 14 /* 15 * 以Person对象的年龄进行从小到大的排序。 16 * 17 */ 18 ts.add(new Person("zhangsan",28)); 19 ts.add(new Person("wangwu",29)); 20 ts.add(new Person("lisi",21)); 21 ts.add(new Person("zhouqi",29)); 22 ts.add(new Person("zhaoliu",25));//Person cannot be cast to class java.lang.Comparable 23 24 Iterator it = ts.iterator(); 25 26 while(it.hasNext()) { 27 Person p = (Person)it.next(); 28 29 System.out.println(p.getName()+":"+p.getAge()); 30 } 31 } 32 33 34 35 /** 36 * 37 */ 38 public static void demo1() { 39 TreeSet ts = new TreeSet(); 40 41 ts.add("abc"); 42 ts.add("zaa"); 43 ts.add("aa"); 44 ts.add("nba"); 45 ts.add("cba"); 46 47 Iterator it = ts.iterator(); 48 49 while(it.hasNext()) { 50 System.out.println(it.next()); 51 } 52 } 53 54 }
1 package cn.itcast.p.bean; 2 3 public class Person /*treeset用*/implements Comparable { 4 private String name; 5 private int age; 6 7 8 public Person() { 9 super(); 10 // TODO Auto-generated constructor stub 11 } 12 public Person(String name, int age) { 13 super(); 14 this.name = name; 15 this.age = age; 16 17 } 18 19 @Override 20 public int hashCode() { 21 System.out.println(this+".....hashCode"); 22 // TODO Auto-generated method stub 23 return name.hashCode()+age*27;//age后面乘以一个数增大离散程度,减少返回哈希值相等的几率 24 //好比张三哈希值20 年龄40 李四哈希值30,年龄30 结果哈希值一样 25 //乘一个数后就不一样了离散程度变大了 26 27 28 //return 100;//会比较equals 29 } 30 public boolean equals(Object obj) { 31 //健壮性 32 if (this == obj) {//有可能传入相同的对象,可以先行判断是否为同一对象add(p) add(p)这种传入两次 33 return true; 34 } 35 if (!(obj instanceof Person)) {//判断是否为Person类型,类型不一致也不应该传入 36 throw new ClassCastException("类型错误"); 37 } 38 39 // System.out.println(this+"...equals...."+obj); 40 Person p = (Person)obj; 41 42 43 return this.name.equals(p.name) && this.age == p.age; 44 } 45 public String getName() { 46 return name; 47 } 48 public void setName(String name) { 49 this.name = name; 50 } 51 public int getAge() { 52 return age; 53 } 54 public void setAge(int age) { 55 this.age = age; 56 } 57 //ctrl+alt+s 快捷构造set,get方法 初始化等 58 public String toString() { 59 return name+":"+age; 60 } 61 @Override 62 public int compareTo(Object o) {//对象的自然排序(treeset) 63 // TODO Auto-generated method stub 64 Person p = (Person)o; 65 int temp = this.age - p.age; 66 return temp==0?this.name.compareTo(p.name):temp;//主要条件次要条件,以年龄 67 68 // int temp = this.name.compareTo(p.name); 69 // return temp==0?this.age-p.age:temp;//以名字为主要条件 70 /* 71 * if (this.age>p.age) 72 * return 1; 73 * 74 * if (this.age<p.age) 75 * return -1; 76 * if (this.age == p.age) { 77 * return this.name.compareTo(p.name); 78 * } 79 */ 80 81 } 82 }
见集合框架TXT
原文地址:https://www.cnblogs.com/doremi429/p/15449822.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux和windows互传文件,用户配置文件和密码配置文件,用户组和用户管理
- 除Innodb和MyISAM外MySQL还有哪些存储引擎
- MySQL自身对性能的影响
- Python 技术篇-用pywin32库实现读写剪贴板
- Excel 技巧篇-在指定范围内生成指定小数位的随机数
- PyQt5 技巧篇-窗口置顶设置,如何使窗口始终显示在最前面
- 解决npm install时报错无法安装chromedriver的问题
- 解决集成jpa时无法创建entityManagerFactory的问题
- Spring船新版推出的WebFlux,是兄弟就来学我
- JDK9特性-Reactive Stream 响应式流
- Java函数式编程之Stream流编程
- 使用docker安装elasticsearch伪分布式集群以及安装ik中文分词插件
- PyQt5 技巧篇-如何让窗体只显示关闭按钮
- Gradle多项目构建与jar包发布
- Gradle初体验