您的位置:首页 > 编程语言 > Java开发

JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)

2017-09-01 09:41 411 查看
一、Comparable接口对实现它的实体类进行强制排序功能,这种排序称为类的自然排序,类的compareTo方法被称为自然排序方法;

二、Lists(和Arrays)数组中实现Comparable接口的类可以通过 
Collections.sort
 (and 
Arrays.sort
)进行自动排序,实现此接口的对象可以作为sorted
map 的key或者做为 sorted
set的元素,无需指定比较器;

三、对于自然排序类C大于类B就是c.compareTo(b)==1;

四、自然排序demo

package framework.yaomy.thread.example;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import framework.yaomy.thread.model.User;

/**
* @Description:TODO
* @version 1.0
* @since JDK1.7
* @author yaomy
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年8月31日 下午8:16:02
*/
public class Comparab
4000
leDemo {

public static void main(String[] args) {

User[] user = new User[3];

user[0] = new User(3, "朝阳3");
user[1] = new User(1, "朝阳1");
user[2] = new User(2, "朝阳2");
for(int i=0;i<3;i++){
System.out.println(user[i].getPriority()+"======="+user[i].getUsername());
}
System.out.println("==================================");
Arrays.sort(user);
for(int i=0;i<3;i++){
System.out.println(user[i].getPriority()+"======="+user[i].getUsername());
}
System.out.println(user);

System.out.println("/////////////////list/////////////////////");
List<User> list = new ArrayList<User>();
list.add(new User(7, "朝阳7"));
list.add(new User(4, "朝阳4"));
list.add(new User(8, "朝阳8"));
Collections.sort(list);
for(User user1:list){
System.out.println(user1.getPriority()+"======="+user1.getUsername());
}
}
}


返回结果:
3=======朝阳3
1=======朝阳1
2=======朝阳2
==================================
1=======朝阳1
2=======朝阳2
3=======朝阳3
/////////////////list/////////////////////
4=======朝阳4
7=======朝阳7
8=======朝阳8

实现Comparable接口的实体类:
package framework.yaomy.thread.model;

/**
* @Description:TODO
* @version 1.0
* @since JDK1.7
* @author yaomingyang
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年8月27日 上午10:33:48
*/
public class User implements Comparable<User>{

private Integer priority;
private String username;

public User(Integer priority, String username) {
this.priority = priority;
this.username = username;
}
public Integer getPriority() {
return priority;
}

public void setPriority(Integer priority) {
this.priority = priority;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

/**
*
* @Description:当前对象和其他对象做比较,当前优先级大就返回-1,优先级小就返回1
* 值越小优先级越高
* @param TODO
* @author yaomingyang
* @date 2017年8月27日 上午11:28:10
*/
@Override
public int compareTo(User user) {
// System.out.println("比较结果"+this.priority.compareTo(user.getPriority()));
return this.priority.compareTo(user.getPriority());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐