A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追梦无悔 高级黑马   /  2013-6-22 00:28  /  1205 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



   在Java的世界里排序有很多方法,今天我就介绍一下TreeSet和Comparator进行排序排序的方法。

一、利用TreeSet和Comparator进行数字的升序和降序排序
  1. package edu.sdp.demo;

  2. import java.util.Comparator;
  3. import java.util.Iterator;
  4. import java.util.TreeSet;

  5. public class TreeSetComparator {
  6.        
  7.         public static void main(String[] args) {
  8.                
  9. //        利用TreeSet和Comparator 进行排序

  10.         Comparator<Object> com = new Comparator<Object>() {

  11.                 @Override
  12.                 public int compare(Object o1, Object o2) {
  13.                         // TODO Auto-generated method stub
  14.                         Integer oo1 = (Integer) o1;
  15.                         Integer oo2 = (Integer) o2;
  16.                         /*
  17.                          * 降序排列
  18.                          
  19.                         if (oo1 > oo2) {
  20.                                 return -1;
  21.                         }else if(oo1 < oo2){
  22.                                 return 1;
  23.                         }else{
  24.                                 return 0;
  25.                         }
  26.                         */
  27.                        
  28.                         /*
  29.                          * 升序排列
  30.                          */
  31.                         if (oo1 > oo2) {
  32.                                 return 1;
  33.                         } else if(oo1 <oo2){
  34.                                 return -1;
  35.                         }else{
  36.                                 return 0;
  37.                         }
  38.                 }
  39.                
  40.         };
  41.        
  42.         TreeSet tree = new TreeSet(com);
  43.        
  44.         tree.add(1);
  45.         tree.add(5);
  46.         tree.add(100);
  47.         tree.add(30);
  48.         tree.add(20);

  49.         Iterator iter = tree.iterator();//迭代器
  50.         while (iter.hasNext()) {

  51.                 System.out.println(iter.next());
  52.         }
  53. }
  54. }
复制代码
二、利用TreeSet和Comparator进行方法的排序
1、Person类
  1. package edu.sdp.java.demo;

  2. public class Person {

  3.         private int id;
  4.         private String name;
  5.         private int age;
  6.         private String address;
  7.        
  8.         public Person(){
  9.                
  10.         }
  11.        
  12.        
  13.        
  14.         public Person(int id, String name, int age, String address) {
  15.                 super();
  16.                 this.id = id;
  17.                 this.name = name;
  18.                 this.age = age;
  19.                 this.address = address;
  20.         }



  21.         public int getId() {
  22.                 return id;
  23.         }
  24.         public void setId(int id) {
  25.                 this.id = id;
  26.         }
  27.         public String getName() {
  28.                 return name;
  29.         }
  30.         public void setName(String name) {
  31.                 this.name = name;
  32.         }
  33.         public int getAge() {
  34.                 return age;
  35.         }
  36.         public void setAge(int age) {
  37.                 this.age = age;
  38.         }
  39.         public String getAddress() {
  40.                 return address;
  41.         }
  42.         public void setAddress(String address) {
  43.                 this.address = address;
  44.         }


  45.         @Override
  46.         public String toString() {
  47.                 return "Person [id=" + id + ", name=" + name + ", age=" + age
  48.                                 + ", address=" + address + "]";
  49.         }
  50.        
  51.        
  52.        
  53. }
复制代码
2、TreeSetC类
  1. package edu.sdp.java.demo;

  2. import java.util.Comparator;
  3. import java.util.Iterator;
  4. import java.util.TreeSet;

  5. public class TreeSetC {
  6.         public static void main(String[] args) {
  7.                
  8.        

  9.         Comparator com = new Comparator(){

  10.                 @Override
  11.                 public int compare(Object o1, Object o2) {
  12.                         Person oo1 = (Person)o1;
  13.                         Person oo2 = (Person)o2;
  14.                         if (oo1.getAge() > oo2.getAge()) {
  15.                                 return 1;
  16.                         }else if(oo1.getAge() < oo2.getAge()){
  17.                                 return -1;
  18.                         }else{
  19.                                 return 0;
  20.                         }
  21.                 }
  22.         };               
  23.        
  24.                        
  25.                 TreeSet set = new TreeSet(com);
  26.                
  27.                 Person p1 = new Person(2,"旺财",28,"济南");
  28.                 Person p2 = new Person(3,"王超",18,"临沂");
  29.                 Person p3 = new Person(1,"高向阳",21,"鱼台");
  30.                
  31.                 set.add(p1);
  32.                 set.add(p2);
  33.                 set.add(p3);
  34.                
  35.                
  36.                  Iterator iter = set.iterator();//遍历
  37.                  
  38.                  while(iter.hasNext()){
  39.                          System.out.println(iter.next());
  40.                  }
  41.         }

  42.        
  43. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马