【Java学习笔记】<集合框架>TreeSet,Comparable,Comparator
public class Person implements Comparable{
private String name;
private int age; public Person(){
super();
}
public Person(String name, int age)
{
super();
this.name = name;
this.age = age;
} @Override
public int hashCode() { return name.hashCode()+age*27;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof Person))
throw new ClassCastException("类型错误"); Person p = (Person) obj; return this.name.equals(p.name) && this.age == p.age;
}
@Override
public String toString() { return name+":"+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;
}
@Override
public int compareTo(Object o) { //先按年龄排,再按姓名排 Person p = (Person)o; int temp = this.age - p.age; return temp==0? this.name.compareTo(p.name):temp; } }
import java.util.Comparator; import cn.itcast.p1.bean.Person; public class ComparatorByName implements Comparator { //先按姓名排,再按年龄排 @Override
public int compare(Object o1, Object o2) {
Person p1 = (Person)o1;
Person p2 = (Person)o2; int temp = p1.getName().compareTo(p2.getName()); return temp==0?p1.getAge()-p2.getAge() : temp;
} }
import java.util.Iterator;
import java.util.TreeSet; import cn.itcast.p1.bean.Person;
import cn.itcast.p5.comparator.ComparatorByName; public class TreeSetDemo { public static void main(String[] args) {
// demo1();
TreeSet ts = new TreeSet(new ComparatorByName()); //添加 new ComparatorByName(),会出现结果一,去除的话 ,出现结果2
//Comparator 优先于 Comparable ts.add(new Person("zhangsan",28));
ts.add(new Person("lisi",21));
ts.add(new Person("zhouqi",29));
ts.add(new Person("zhaoliu",25));
ts.add(new Person("wangwu",24));
ts.add(new Person("lisi",21));
ts.add(new Person("zhouqi",29)); Iterator it = ts.iterator(); while (it.hasNext())
{
Person p = (Person)it.next(); System.out.println(p);
} } public static void demo1() {
TreeSet ts = new TreeSet(); ts.add("abc");
ts.add("zaa");
ts.add("aa");
ts.add("nba");
ts.add("cba"); Iterator it = ts.iterator(); while (it.hasNext())
{
System.out.println(it.next());
}
} }
【Java学习笔记】<集合框架>TreeSet,Comparable,Comparator的更多相关文章
- java学习笔记13--比较器(Comparable、Comparator)
java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 ...
- Java学习笔记--集合元素的比较Comparable,Comparator
原文见: http://www.cnblogs.com/sunflower627/p/3158042.html 1. Comparator 和 Comparable 相同的地方 他们都是java的一个 ...
- java学习笔记 --- 集合
1.定义:集合是一种容器,专门用来存储对象 数组和集合的区别? A:长度区别 数组的长度固定 集合长度可变 B:内容不同 数组存储的是同一种类型的元素 而集合可以存储不同类型的元素 C:元 ...
- Java学习关于集合框架的基础接口--Collection接口
集合框架(Collection Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准 ...
- java学习笔记—集合之Map集合
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0p ...
- Java学习之集合框架的迭代器--Iteratorjk及ListItertor接口
通常情况下,你会希望遍历一个集合中的元素.例如,显示集合中的每个元素.一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象 ...
- java学习第六天集合框架.day15
Set接口 Set集合存储特点: 不允许元素重复 不会记录元素的添加先后顺序 Set只包含从Collection继承的方法,不过Set无法记住添加的顺序,不允许包含重复的元素.当试图添加两个相同元素进 ...
- 0015 Java学习笔记-集合-TreeMap集合
主要的方法 构造方法: TreeMap(); TreeMap(Comparator<?super K> comparator); TreeMap(Map<? extends K,? ...
- java学习笔记-集合set
equals指内容(值)相等,== 指地址相等 ===============set类 set继承自collection,但set没有新增方法,只是set里的元素不重复,下面是set常用方法 ==== ...
- Java学习笔记——集合
类集简介 从JDK1.2开始Java引入了类集开发框架,所谓的类集指的就是一套动态对象数组的实现方案,在实际开发之中没有有何一项开发可以离开数组,但是传统的数组实现起来非常的繁琐.而且长度是其致命伤, ...
随机推荐
- centos7优化mysql5.6配置
一.环境参数 [root@hn mysql]# grep 'physical id' /proc/cpuinfo |sort -u physical id : 0 physical id : 1 [r ...
- java连接mysql :No Suitable Driver Found For Jdbc 解决方法
今天出现编码出现了No suitable driver found for jdbc,又是找遍了网上的资料,基本上都说是以下个问题: 一是:连接URL格式出现了问题(Connection con ...
- Gocd持续部署利器
http://www.go.cd/documentation/user/current http://www.go.cd/images/home-image1.png Gocd 是ThoughtWor ...
- Codeforces 723c [贪心][乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给一个n和m. 第二行给n个数. 每次操作可以把n个数中的任何一个数替代为别的数,问最少的操作次数使得1.2.3.4.5...m中的数出现的次数 ...
- Linux下编译带x264的ffmpeg的配置方法,包含SDL2
一.环境准备 ffmpeg下载:http://www.ffmpeg.org/download.html x264下载:http://download.videolan.org/x264/snapsho ...
- 洛谷P3371 【模板】单源最短路径
P3371 [模板]单源最短路径 282通过 1.1K提交 题目提供者HansBug 标签 难度普及/提高- 提交 讨论 题解 最新讨论 不萌也是新,老司机求带 求看,spfa跑模板40分 为什么 ...
- devexpress中如何给TabPage控件的Tab定义背景色
js: /*tab选项卡样式*/ .color .dxtc-link { background-color: #bf4e6a !important; } 后台代码: //选项卡样式 protected ...
- iperf3实践
The basic commands are the same for iperf and iperf3: SAMPLE IPERF/IPERF3 COMMANDS Server: iperf/ipe ...
- tomacat启动慢
tomcat目录下有多个工程,tomcat每次启动的时候都会去加载,删除不需要的工程,
- 解决EditorLineEnds.ttr被锁定导致Delphi2006-2010无法启动的问题
在批处理最后增加了启动Delphi的命令.将批处理和Delphi放在同一目录即可. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...