- 浏览: 376165 次
- 来自: 北京
文章分类
- 全部博客 (237)
- XML (6)
- JavaSE (39)
- Junit (1)
- Maven (10)
- JavaScript (12)
- JavaEE (16)
- HTML5 (10)
- java多线程 (8)
- Hibernate (30)
- Java反射 (3)
- Spring (11)
- Struts (1)
- svn (2)
- linux (12)
- 代码实例 (1)
- 设计模式 (1)
- UML (1)
- javassist (1)
- Oracle (3)
- Hibernate异常 (9)
- DWR (6)
- Java泛型 (2)
- SpringMVC (11)
- Dbunit (3)
- github (2)
- Algorithm (1)
- zTree (1)
- jquery (7)
- freemarker (4)
- mysql (5)
- ffmpeg (1)
- 编码 (1)
- lucene (15)
- hadoop (1)
- JVM (1)
- Regular Expressions (5)
- myeclipse (1)
- 爬虫 (7)
- 加密 (3)
- WebService (2)
- Socket (2)
- Windows (1)
最新评论
-
wxpsjm:
好直接
HV000030: No validator could be found for type: java.lang.Integer. -
wxhhbdx:
学习了,对新手来说很不错的教程。
SpringMVC入门 (二) 数值传递 -
xgcai:
正好在学dwr
DWR入门 (二)用户实例
Java通过TreeSet可以实现对元素的排序。排序规则通过元素类实现Comparable接口,然后重写该Comparable接口的ComparaTo方法来规定。
这里我们有一个FileNode类, 让该类实现Comparable,并通过对比文件的路径长短来排序。
排序按照文件路径'从近到远'(就是d:/1->d:/1/1->d:/1/1/1)
这里要根据compareTo返回的值进行排序。
要注意的就是假如返回的是0, 那么程序就会认定两个对象是相同的, 那么调用该方法的this对象就不会被存入TreeSet当中。
假如返回的是负数, 那么程序就会将重新排序。
这里的一个重点就是, compareTo(参数对象)这里的参数。
Java在这里并不是将this对象和排序的最后一个进行对比, 而是和第一个进行对比。
假如我们这里将三个文件路径依次放入TreeSet,
treeSet.add("d:/1/2/3");
treeSet.add("d:/1/2");
treeSet.add("d:/1");
那么程序的执行顺序就是:
在执行add("d:/1/2")的时候, 将两个参数进行对比,结果返回负数。
此时的treeSet是["d:/1/2","d:/1/2/3"]
在执行add("d:/1")的时候, 继续进行对比。
只是此时的参数并不是d:/1/2/3, 而是最短的d:/1/2。
对比结果为负数, 于是两个元素互换.
执行结果为
["d:/1","d:/1/2","d/1/2/3"]
这里我们有一个FileNode类, 让该类实现Comparable,并通过对比文件的路径长短来排序。
排序按照文件路径'从近到远'(就是d:/1->d:/1/1->d:/1/1/1)
public class FileNode implements Comparable<FileNode>{ File self; private Set<FileNode> childList; public File getSelf() { return self; } public void setSelf(File self) { this.self = self; } public FileNode(File self) { this.self = self; } private String getSelfPath(){ return this.self.getAbsolutePath(); } @Override public int compareTo(FileNode o) { if(this.getSelfPath().equals(o.getSelfPath())){ return 0; } else{ return this.getSelfPath().length()-o.getSelfPath().length(); //这里如果结果是负数, 那么两个对象就会互换位置. } } }
这里要根据compareTo返回的值进行排序。
要注意的就是假如返回的是0, 那么程序就会认定两个对象是相同的, 那么调用该方法的this对象就不会被存入TreeSet当中。
假如返回的是负数, 那么程序就会将重新排序。
这里的一个重点就是, compareTo(参数对象)这里的参数。
Java在这里并不是将this对象和排序的最后一个进行对比, 而是和第一个进行对比。
假如我们这里将三个文件路径依次放入TreeSet,
treeSet.add("d:/1/2/3");
treeSet.add("d:/1/2");
treeSet.add("d:/1");
那么程序的执行顺序就是:
在执行add("d:/1/2")的时候, 将两个参数进行对比,结果返回负数。
此时的treeSet是["d:/1/2","d:/1/2/3"]
在执行add("d:/1")的时候, 继续进行对比。
只是此时的参数并不是d:/1/2/3, 而是最短的d:/1/2。
对比结果为负数, 于是两个元素互换.
执行结果为
["d:/1","d:/1/2","d/1/2/3"]
发表评论
-
Socket编程的HelloWorld实例
2014-11-07 15:05 900public class Client { ... -
ImageIO宋体出现小方框的解决
2014-11-03 16:34 928http://www.blogjava.net/yuanqix ... -
ArrayList根据条件+for循环批量删除的方法
2014-09-23 11:39 2722场景如下: ArrayList<Obj> list ... -
Java内部类的实例化
2014-08-06 15:51 1036class A{ getInstance(){ ... -
通过Thread.sleep把任务平均分配给线程按顺序执行的小例子
2014-07-22 10:46 1083package com.lj.test.JavaSe4; ... -
输入两个整数, 计算百分比
2014-07-21 18:01 1466public static String getPercen ... -
timer cancel方法的一个小实例
2014-07-21 12:14 1134package com.lj.timer; import ... -
通过Calendar获取上个月的最后一天
2014-06-26 12:11 2871Calendar cal=Calendar.getI ... -
通过BigInteger进行数字进制的相互转换
2014-06-24 11:09 25581. 十六进制转换为十进制 BigInteger deci ... -
[转]RSA实例
2014-06-18 17:27 911package com.lj.rsa; import j ... -
[转]sun.misc.BASE64Encoder找不到jar包的解决方法
2014-06-18 15:43 9431.右键项目-》属性-》java bulid path-》jr ... -
空Object转换String的陷阱
2014-06-17 15:45 807Object a=null; String b ... -
Java Convert Long to Date
2014-06-16 18:06 770问题: I have list with long value ... -
[转]JAVA中List&Set转换
2014-06-07 14:23 528JAVA中List&Set转换 list = new ... -
aes加密时的Illegal key size or default parameters
2014-06-06 14:21 4199KeyGenerator kgen = KeyGenerat ... -
String.replaceLast()
2014-06-03 16:02 1096http://stackoverflow.com/questi ... -
通过正则表达式来获取json数值
2014-05-23 11:39 13private String getJsonValue(Str ... -
java找不到或无法加载主类
2014-05-19 13:21 1283用CMD运行java +类名, 居然碰到这个问题。 编译是没有 ... -
Java转义字符笔记 |
2014-01-12 21:01 918数据库有一个关键字列-keyword,里面存放的关键字格式如下 ... -
char和int类型相互转换
2013-12-10 18:43 1376今天看到别人使用一个方法 ->String.indexO ...
相关推荐
在实际开发中,理解并灵活运用`TreeSet`和`Comparable`接口可以提高代码的可读性和维护性。合理地设计比较规则,可以让数据结构在处理大量数据时展现出更优的性能。同时,掌握`Comparator`接口的应用也能让我们在...
在具体实现时,我们可能会创建一个`Card`类表示扑克牌,包含花色和点数属性,并重写`Comparable`接口或提供`Comparator`来确定扑克牌的排序规则。然后,创建一个`TreeSet<Card>`实例来存储和管理所有的牌。当需要...
Java TreeSet实现学生按年龄大小和姓名排序的方法示例 在 Java 中,TreeSet 是一...本文展示了如何使用 Java 的 TreeSet 和 Comparable 接口来实现学生按年龄大小和姓名排序的方法,这对 Java 开发人员来说非常有用。
12. **TreeSet和Comparable接口**:如果没有提供比较器,TreeSet会使用元素实现的Comparable接口进行排序。 13. **Visual FoxPro参照完整性**:设置为"限制"时,删除父表记录会检查子表是否有相关记录,如果有则不...
11. TreeSet 和 Comparable:在 Java 中,如果创建的 TreeSet 没有指定比较器,那么集合中的元素需要实现 Comparable 接口,以提供比较规则。 12. break, continue, return 区别:break 用于跳出当前循环;continue...
默认情况下,元素会按照它们的自然顺序(即Comparable接口定义的顺序)排序,如果元素不支持自然排序,可以在创建TreeSet时传入自定义的Comparator。TreeSet的插入、删除和查找操作的时间复杂度为O(logn),因为内部...
自然顺序是指元素本身的`Comparable`接口实现,如果元素类型不实现`Comparable`,则需要在创建`TreeSet`时提供一个`Comparator`。`TreeSet`的插入、删除和查找操作的时间复杂度为O(log n),因为树结构提供了较好的...
1. **自然排序**:如果集合中的元素实现了`Comparable`接口,那么`TreeSet`将使用`compareTo()`方法来决定元素的顺序。 2. **自定义比较器**:如果我们需要自定义元素的排序规则,可以通过传递一个实现了`...
介绍TreeSet集合用法,向TreeSet集合中添加类的对象,此类需实现Comparable接口,有实例,供需要的朋友下载学习。
在Java编程中,集合框架...通过上述分析,我们可以理解Java如何从Set中取出有序的记录,以及如何利用TreeSet和Comparable接口实现元素的排序。在实际开发中,根据需求选择合适的Set实现类,可以有效地管理和操作数据。
`TreeSet`内部基于红黑树(Red-Black Tree)数据结构,这是一种自平衡的二叉查找树,能够保证插入、删除和查找操作的时间复杂度为O(log n)。由于红黑树的特性,`TreeSet`可以保证元素的有序性,而这个顺序通常是由...
在Java编程语言中,集合框架是处理数据的...在使用这些集合类时,确保正确地实现了equals()、hashCode()(对于HashSet和LinkedHashSet)以及Comparable或Comparator(对于TreeSet)方法,是保证集合行为正确性的关键。
在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...
HashSet 和 TreeSet 是 Java 中两种常用的 Set 集合实现,它们都继承自 Set 接口,但实现方式和特性上存在显著差异。 首先,HashSet 是基于哈希表(HashMap 实例)来存储元素的,因此它提供了快速的插入、删除和...
在Java集合框架中,TreeSet是一个重要的数据结构,它是Set接口的实现类之一,与HashSet和LinkedHashSet不同,TreeSet具有排序功能,这是因为其不仅继承自AbstractSet,还实现了SortedSet和NavigableSet接口。...
HashSet和TreeSet使用方法的区别解析 HashSet和TreeSet都是Java集合框架中的Set接口实现,用于存储不重复的元素。但是,它们在使用方法和实现机理上有很大的区别。 首先,从使用方法上讲,HashSet和TreeSet都可以...
在Java编程语言中,Comparable和Comparator接口是两个非常重要的组件,它们主要用来进行对象的比较和排序。了解它们之间的区别对于提升代码的可维护性和灵活性至关重要。 Comparable接口来源于java.lang包,它定义...
TreeSet是Java集合框架中的一种有序集合,它基于红黑树数据结构实现,因此具有O(log n)的插入、删除和查找效率。TreeSet提供两种排序方式:自然排序和定制排序。 1. 自然排序: 自然排序是TreeSet默认的排序方式。...
自然排序要求添加到`TreeSet`中的对象必须实现`Comparable`接口,而定制排序则需要提供一个实现了`Comparator`接口的对象来比较集合中的元素。 #### 二、自定义对象添加到TreeSet中的方法 ##### 1. 实现Comparable...
`c1`和`c2`虽然`equals()`返回true,但由于`compareTo()`返回0,所以`c2`不会出现在`TreeSet`中,这充分展示了`TreeSet`中判断重复元素的逻辑。 总结来说,`TreeSet`在判断重复元素时,主要依赖于`Comparable`接口...