JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
2017-09-01 09:41
375 查看
一、Comparable接口对实现它的实体类进行强制排序功能,这种排序称为类的自然排序,类的compareTo方法被称为自然排序方法;
二、Lists(和Arrays)数组中实现Comparable接口的类可以通过
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());
}
}
二、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());
}
}
相关文章推荐
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)
- JAVA并发编程随笔【二】Comparable接口(类的自然排序 natural ordering)