- 浏览: 1341737 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (274)
- 生活工作感想 (16)
- 数据结构算法 (2)
- 技术转载 (53)
- 其他 (1)
- LINUX (9)
- 数据库 (5)
- IDE-eclipse (11)
- JAVA (47)
- JBPM (2)
- windows (2)
- 服务器 (12)
- activiti (1)
- maven (3)
- 励志转载 (1)
- jsp相关 (13)
- webservice (3)
- pinyin4j (1)
- 搜索引擎 (1)
- WEB前端 (64)
- javascript (58)
- 正则表达式 (4)
- junit (2)
- 微信 (1)
- jquery (17)
- css3 (3)
- android (9)
- 面试 (2)
- 安全 (1)
- mysql (27)
- oracle (8)
- Chrome浏览器 (8)
- angularjs (1)
- httpclient (2)
- spring (2)
- spring-quartz (2)
- python (1)
- HTML5 (1)
- reactjs (2)
最新评论
-
mm1984930522:
[i][/i]
html5 跨iframe的拖拽实现移动端页面设计器 -
wangyudong:
很多API doc生成工具生成doc需要重度依赖代码里加注解的 ...
jsdoc-toolkit生成javascriptAPI文档 -
kealuya:
留言止于智者
Tomcat 7最大并发连接数的正确修改方法 -
GGGGeek:
应该是@Before public void setUp(){ ...
利用junit对springMVC的Controller进行测试 -
leoge0113:
...
Tomcat 7最大并发连接数的正确修改方法
一个类实现了java.lang.Comparable接口表明这个类的对象之间是可以进行相互比较的,这个类对象组成的集合就可以直接使用Collections.sort()方法排序。
java.util.Comparator可看成是算法的实现,将算法和数据分离,可在以下两种环境下使用:
1.类的设计师没有考虑到比较问题而没有实现Comparable接口,可以通过Comparator排序而不用改变对象本身
2.可以使用多种排序标准,升序,降序
第一种方法:实现java.lang.Comparator接口进行排序
public class User implements Comparable{
private String name;
private int age;
private String address;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int compareTo(Object o) {
// TODO Auto-generated method stub
User user = (User)o;
if (age > user.getAge()){
return 1;
} else if (age == user.getAge()){
return 0;
} else {
return -1;
}
}
}
public class ComparableTest {
@SuppressWarnings("unchecked")
@Test
public void comparable(){
List<User> userList = new ArrayList<User>();
User user = new User();
user.setAddress("北京");
user.setAge(15);
user.setName("张三");
userList.add(user);
user = new User();
user.setAddress("上海");
user.setAge(25);
user.setName("李四");
userList.add(user);
user = new User();
user.setAddress("广州");
user.setAge(18);
user.setName("王五");
userList.add(user);
user = new User();
user.setAddress("香港");
user.setAge(35);
user.setName("马六");
userList.add(user);
Collections.sort(userList);
for (User u:userList){
System.out.println(u.getAge()+","+u.getName()+","+u.getAddress());
}
}
}
第二种方法: 定义比较算法,实现java.util.Comparator接口
public class User {
private String name;
private int age;
private String address;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class NewComparator implements Comparator<User>{
public int compare(User user1, User user2) {
// TODO Auto-generated method stub
if (user1.getAge() > user2.getAge()){
return 1;
} else if (user1.getAge() == user2.getAge()){
return 0;
} else {
return -1;
}
}
}
public class ComparatorTest {
@SuppressWarnings("unchecked")
@Test
public void comparatorTest(){
List<User> userList = new ArrayList<User>();
User user = new User();
user.setAddress("北京");
user.setAge(15);
user.setName("张三");
userList.add(user);
user = new User();
user.setAddress("上海");
user.setAge(25);
user.setName("李四");
userList.add(user);
user = new User();
user.setAddress("广州");
user.setAge(18);
user.setName("王五");
userList.add(user);
user = new User();
user.setAddress("香港");
user.setAge(35);
user.setName("马六");
userList.add(user);
Collections.sort(userList,new NewComparator());
for (User u:userList){
System.out.println(u.getAge()+","+u.getName()+","+u.getAddress());
}
}
}
发表评论
-
SimpleCaptcha验证码组件使用
2015-03-31 13:19 10114最近需要做一个验证码信息,在网上找了些验证码组 ... -
Hibernate纯SQL查询
2015-03-19 14:18 675目前有个项目使用了hibernate,让使用m ... -
cglib中的两个工具类BeanMap,BeanCopier
2015-01-25 17:11 16638这两天看了下cglib的一些源码,发现B ... -
jsdoc-toolkit生成javascriptAPI文档
2015-01-22 12:47 2878前言 对于使 ... -
随机生成20个15位长度的数字
2015-01-20 09:16 2659import java.ut ... -
jvisualvm 远程监控Linux下的tomcat
2015-01-13 20:43 11176前一段测试 ... -
Axis2开发WebService客户端
2015-01-11 22:08 1594转:http://harveyzeng.iteye.com ... -
phonegap 开发
2014-11-02 21:35 01.在cmd的环境中 2.进入你要创建的文件夹里,比如在E ... -
phonegap插件编写升级
2014-11-02 21:09 1331个人博客原文链接:http://www.zero ... -
写一个phonegap插件
2014-11-01 18:44 1725我的博客网站:http://www.zeromike.ne ... -
java注解方式进行反射
2014-11-01 18:38 1513我的博客网站:http://www.zeromike.ne ... -
java使用3DES算法进行密码加密
2014-10-20 23:33 34238我的个人网站 ... -
java 实现文件内容的加密和解密
2014-10-05 03:39 21092转载:http://xiaoxiaokuang.iteye. ... -
利用apache Collections和google guava对list和map进行过滤和排序
2014-10-03 18:34 16764在工作中,我们常常需要对List或者Map等集合结 ... -
MD5方式处理tomcat下文件名称乱码问题
2014-09-28 21:17 2088今天说一下下载文件的东西,因为整体的架构是:手机客 ... -
项目中log4j的简单配置
2014-09-26 19:28 1344每次做日志处理的时候,都是在网上左扒一点,右扒一点,太费劲 ... -
java操作文件
2014-09-23 21:57 637先贴个自己写的 import java.io. ... -
java实现zip压缩文件(同一文件夹下的多个文件夹打成一个zip包)
2014-09-10 22:12 34678参考:http://blog.163.com/shanqin ... -
java base64编码和解码(转)
2014-07-21 21:19 4617转:http://hw1287789687.iteye.co ... -
POI 操作Excel,创建下拉框
2014-05-29 15:57 1697import java.io.FileOutputStre ...
相关推荐
首先,`Comparable`接口是Java.lang包下的一个接口,它只有一个方法`compareTo(T o)`。任何类如果想要实现自然排序,即按照类定义的规则进行排序,都可以实现这个接口。例如,`String`类就实现了`Comparable`接口,...
在Java编程语言中,Comparable和Comparator接口是两个非常重要的组件,它们主要用来进行对象的比较和排序。了解它们之间的区别对于提升代码的可维护性和灵活性至关重要。 Comparable接口来源于java.lang包,它定义...
- `java.util.Comparator`和`java.lang.Comparable`:用于对象之间的比较。 这些主题共同构成了Java SE的基础,是理解和开发Java应用程序的关键。通过学习这些概念,开发者能够创建安全、高效和可维护的代码。
Java中的Comparable和Comparator接口在处理数据排序时都扮演着重要角色,但它们有着明显的区别。 **Comparable接口** 是Java基础语言包`java.lang`的一部分,它定义了一个单一的方法`compareTo(T o)`。任何实现了...
import java.util.Comparator; public class CustomerComparator implements Comparator<Customer> { @Override public int compare(Customer c1, Customer c2) { // 首先比较年龄 if (c1.getAge() < c2.getAge...
- `Comparable`和`Comparator`接口常用于排序操作,实现了这两个接口的对象可以进行比较。 5. **异常处理**: - Java使用异常处理机制来处理运行时错误。异常类位于`java.lang.Throwable`及其子类,如`...
在Java编程语言中,`Comparable`接口和`Comparator`接口是两种重要的排序机制,它们用于对集合中的对象进行比较和排序。理解它们的区别对于任何Java开发者来说都是至关重要的。 首先,`Comparable`接口位于`java....
Java Comparable和Comparator对比详解 Java 中的 Comparable 和 Comparator 是两个常用的接口,用于实现对象的比较和排序。它们都是 Java 中的接口,都是用于比较对象的大小的,但它们有所不同。 Comparable 接口 ...
Java 中的 Comparable 和 Comparator 接口详解 Java 中的 Comparable 和 Comparator 接口都是用于比较和排序的,但是它们之间存在着一些关键的区别。Comparable 是一个排序接口,若一个类实现了 Comparable 接口,...
在Java编程语言中,Comparable和Comparator是两个非常重要的接口,它们都用于对象的比较和排序。下面是关于这两个接口的详细解释: **Comparable接口** Comparable接口位于`java.lang`包下,它是一个对象自比较的...
在Java编程语言中,Comparable和Comparator接口用于比较对象的顺序,尤其在进行排序操作时非常关键。两者虽然目的相似,但使用方式和应用场景有所区别。 Comparable接口定义在`java.lang`包中,它只有一个方法`...
7. **字符处理**:Java的`java.lang.String`类和`java.text`包提供了丰富的字符串和字符处理功能。例如,可以使用StringBuffer或StringBuilder进行字符串拼接,使用Character类进行字符判断和转换,使用Formatter类...
总之,`ArraySort`的核心在于理解并正确使用`Comparator`和`Comparable`接口,它们是Java中进行数组和列表排序的基础。熟练掌握这两个接口的使用,能够帮助开发者灵活地处理各种排序需求,提高代码的可复用性和可...
- **`Comparable`和`Comparator`**:定义元素的自然排序和自定义排序。 3. **多线程** - **`java.lang.Thread`**:表示一个执行线程,通过`start()`方法启动。 - **`synchronized`关键字**:用于同步方法或代码...
此外,Java标准库中的`java.util.Comparator`和`java.lang.Comparable`接口是两个常见的示例。`Comparator`用于比较对象,实现该接口的类可以自定义比较规则;`Comparable`则定义了一个通用的排序规则,实现了这个...
Comparable接口是Java.lang包中的一个接口,提供了一个自然排序方式。该接口适用于一个类有自然顺序,例如String和Integer等Java内建类。实现Comparable接口需要实现compareTo(Object o)方法,该方法比较当前实例...
- 接口与实现:Iterable、Iterator、Comparable、Comparator,这些接口在处理集合时经常用到。 3. **并发处理API**: - `java.util.concurrent`包:提供了线程池、并发容器、同步工具类,如ExecutorService、...
Java标准库中有许多内置的包,如`java.lang`、`java.util`和`java.io`等。 1. `java.lang`:这是所有Java程序的基础,因为它包含了运行任何Java程序都需要的基本类,比如`Object`、`String`、`System`等。`Object`...
Java提供了两种主要的方式来实现对象之间的比较,即`Comparable`接口和`Comparator`接口。这两种接口使得自定义对象可以根据特定的规则进行排序。 首先,`Comparable`接口是Java的`java.lang`包中的一个基础接口,...