- 浏览: 591421 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (154)
- java (31)
- Struts (3)
- Hibernate (8)
- Spring (6)
- JS (14)
- DWR (1)
- Oracle (1)
- SQL Server (0)
- JSF (0)
- JPA (0)
- Grails (3)
- Ajax (1)
- Extjs (0)
- jQuery (4)
- MySQL (2)
- 正则表达式 (2)
- 其他 (6)
- 计算机应用 (7)
- Groovy (8)
- Google (1)
- Web (2)
- MongoDB Java Driver (1)
- mongodb (1)
- Linux (3)
- HTML (1)
- Tomcat (3)
- Eclipse (2)
- JSP (1)
- 缓存 (1)
- 动态 (1)
- 问题与解决 (3)
- HY (1)
- Android (35)
- LBS (1)
最新评论
-
u012136165:
list 方法:纠正:[2,5].add(1,9) ...
Groovy的list和map -
bruce.yuan:
误人子弟的文章。已经看到N个人转了这个帖子,这要贻害多少新人啊 ...
理解并解决GBK转UTF-8奇数中文乱码 -
思念-悲伤:
特意登录上来,感谢下!
理解String的compareTo()方法返回值 -
bo_hai:
总结的好,有效。
理解String的compareTo()方法返回值 -
u012678420:
在onCreate方法中获取某个View的宽度和高度
Set存放不同元素,TreeSet存放不同元素,并且对元素进行排序。
Set<Object> set = new TreeSet<Object>();
set.add(new Integer(18));
set.add(new String("Bruce")); //Error
上面代码有错吗?
以上代码会抛出以下异常
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
当add()一个元素时,需要对元素进行排序,因此会强制转换类型进行比较。
结论:add()相同的类型
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return this.name + " " + this.age;
}
}
Set<Object> set = new TreeSet<Object>();
set.add(new User("David", 25));
set.add(new User("Bruce", 26)); //Error
以上代码会抛出以下异常
Exception in thread "main" java.lang.ClassCastException: src.User cannot be cast to
java.lang.Comparable
结论:需要实现Comparable接口
JDK中实现了Comparable接口的类有:
BigDecimal、BigInteger、Byte、Double、Float、Integer、Long、Short
Character
String
class User implements Comparable {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return this.name + " " + this.age;
}
public int compareTo(Object o) {
User other = (User)o;
if (this.name.compareTo(other.name) > 0) return 1;
if (this.name.compareTo(other.name) < 0) return -1;
return 0;
}
}
public class Test {
public static void main(String[] args){
Set<Object> set = new TreeSet<Object>();
//创建5个不同对象
set.add(new User("Phil", 25));
set.add(new User("Admin", 25));
set.add(new User("Bruce", 26));
set.add(new User("Phil", 43));
set.add(new User("Bruce", 37));
for (Iterator it = set.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
}
/**Output:
Admin 25
Bruce 26
Phil 25
*/
排序成功了,但是却少了2个对象。因为当compareTo()方法返回0时(即排序相等),TreeSet的add()方法会认为已经存在该对象,于是不加到集合当中。
Set<Object> set = new TreeSet<Object>();
set.add(new Integer(18));
set.add(new String("Bruce")); //Error
上面代码有错吗?
以上代码会抛出以下异常
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
当add()一个元素时,需要对元素进行排序,因此会强制转换类型进行比较。
结论:add()相同的类型
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return this.name + " " + this.age;
}
}
Set<Object> set = new TreeSet<Object>();
set.add(new User("David", 25));
set.add(new User("Bruce", 26)); //Error
以上代码会抛出以下异常
Exception in thread "main" java.lang.ClassCastException: src.User cannot be cast to
java.lang.Comparable
结论:需要实现Comparable接口
JDK中实现了Comparable接口的类有:
BigDecimal、BigInteger、Byte、Double、Float、Integer、Long、Short
Character
String
class User implements Comparable {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return this.name + " " + this.age;
}
public int compareTo(Object o) {
User other = (User)o;
if (this.name.compareTo(other.name) > 0) return 1;
if (this.name.compareTo(other.name) < 0) return -1;
return 0;
}
}
public class Test {
public static void main(String[] args){
Set<Object> set = new TreeSet<Object>();
//创建5个不同对象
set.add(new User("Phil", 25));
set.add(new User("Admin", 25));
set.add(new User("Bruce", 26));
set.add(new User("Phil", 43));
set.add(new User("Bruce", 37));
for (Iterator it = set.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
}
/**Output:
Admin 25
Bruce 26
Phil 25
*/
排序成功了,但是却少了2个对象。因为当compareTo()方法返回0时(即排序相等),TreeSet的add()方法会认为已经存在该对象,于是不加到集合当中。
评论
1 楼
thekll
2013-09-22
class User implements Comparable<User> {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + " " + age;
}
public int compareTo(User o) {
// User other = o;
// if (this.name.compareTo(other.name) > 0)
// return 1;
// if (this.name.compareTo(other.name) < 0)
// return -1;
// return 0;
return (name+age).compareToIgnoreCase(o.getName()+o.getAge());
}
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;
}
}
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + " " + age;
}
public int compareTo(User o) {
// User other = o;
// if (this.name.compareTo(other.name) > 0)
// return 1;
// if (this.name.compareTo(other.name) < 0)
// return -1;
// return 0;
return (name+age).compareToIgnoreCase(o.getName()+o.getAge());
}
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;
}
}
发表评论
-
理解并解决GBK转UTF-8奇数中文乱码
2011-06-18 21:29 27109最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK ... -
Java创建对象的四种方法
2010-12-24 15:10 1232package test; import java ... -
文件上传
2010-12-16 09:42 1050我用Excel数据导入来说明文件上传问题 <form ... -
GBK编码转成UTF-8编码
2010-12-03 15:49 1475从GBK编码转成UTF-8编码 private String ... -
HttpClient请求
2010-11-24 18:22 1590一个apache的httpclient简单范本,常用在WebS ... -
接收任意个字符串的方法
2010-11-10 11:32 1103public class MutilStringParamsD ... -
有状态会话Bean(SLSB)和无状态会话Bean(SFSB)的区别(转)
2010-09-26 10:01 1884Session Bean:分有状态 ... -
ThreadLocal解决线程安全问题
2010-09-25 16:55 3281//以下代码存在问题 pub ... -
AOP之Hello World
2010-09-14 23:41 1113目标 package com.aop.joinpoint; ... -
理解Socket
2010-09-03 00:31 1266服务器端代码: import java.io.Buffered ... -
一道Java面试题
2010-08-25 15:40 1288有两组字符串,A组["A","B ... -
理解+=操作符
2010-08-23 14:52 962今天看到一篇文章(下面给出原文链接),对作者的错误理解予以纠正 ... -
更深入地理解自增自减运算符
2010-08-20 17:27 1161public class DeepTest { public ... -
理解重载与重写
2010-08-20 15:51 1088今天有个朋友问我重载与覆盖的区别,所以我就写好了发给他。在这贴 ... -
暴露属性不安全?
2010-08-17 20:19 1218我们在看书的时候常常看到书上说暴露属性不安全,那么请问下哪里不 ... -
理解继承
2010-08-10 11:52 961这个例子涉及到继承与 ... -
获取properties配置文件信息
2010-08-10 11:32 1700import java.io.IOException; imp ... -
中文字符按拼音排序
2010-06-01 13:12 1616java.util.Comparator cmp = java ... -
线程并发
2010-05-25 21:01 1190进程:表示一个任务。 线程:一种比进程更小的执行单位,依附在进 ... -
了解枚举
2010-05-23 19:05 1504为了了解枚举,先利用反射分析一下它 import java.l ...
相关推荐
Class003_TreeSet.java
Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...
HashSet和TreeSet的区别
List,Set练习题(no TreeSet).docx
public int compare(String o1,String o2) { return o1.length()-o2.length(); } }; TreeSet ts = new TreeSet(com);... ts.add("string"); ts.add("char"); ts.add("nothing�"); System.out.println(ts);
(TreeSet) s.subSet(608, true, 611, true)
毕向东Java基础视频教程-集合框架(TreeSet练习).
HashSet和TreeSet_围墙之外.rar
使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。 如果需要的话可以下载,有写成文章的。有写了一点中文...
介绍TreeSet集合用法,向TreeSet集合中添加类的对象,此类需实现Comparable接口,有实例,供需要的朋友下载学习。
计算机后端-Java-Java核心基础-第24章 集合01 25. TreeSet的自然排序.avi
计算机后端-Java-Java核心基础-第24章 集合01 26. TreeSet的定制排序.avi
计算机后端-Java-Java核心基础-第25章 集合02 05. TreeSet的课后练习.avi
在TreeSet中添加自定义对象,能更好地帮助理解TreeSet
【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip
set.add(new Integer(8)); set.add(new Integer(4)); set.add(new Integer(7));)输出后的结果是:4 7 8 Eg: package test; import java.util.*; public class Set{ public static void main(String[] args) { //...
支持范围操作:TreeSet 提供了一些方法用于执行范围操作,例如 subSet()、headSet()、tailSet() 等,可以根据元素的顺序提取子集。 效率较高:基于红黑树的数据结构使得 TreeSet 在插入、删除和查找操作的时间...
treemap treeset hashset hashmap 简要介绍