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

© Без_тебя 中级黑马   /  2014-6-13 03:31  /  1776 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Без_тебя 于 2014-6-13 18:05 编辑

学完comparator,这里写了一个自定义类实现comparator接口,实现了compare方法,并且排序方法封装入一个SortUtil工具类中,可以随时用SortUtil来排序    comparator 和comparable不同在于,comparable是让类实现comparable接口,实现compareTo方法来比较,
    而comparator则是让一个 类(比较器)实现comparator接口,实现其中的compare方法,来比较两个元素的大小,之后可以用自定义的工具类来实现比较功能,或者用Java自带的collection.sort也能实现
    两者相比,comparator更具有灵活性,适用于各种需要经常变更排序方法的情况

package demo3;
/***自定义类实现Comparator接口,并实现了compare的方法
*
*.
import java.util.Comparator;

public class MyComparator <T> implements Comparator<T> {

        @Override
        public int compare(T o1, T o2) {
                // TODO Auto-generated method stub
                String str1 = o1.toString();
                String str2 = o2.toString();
               
                return str1.compareTo(str2);
        }

}

import java.util.Comparator;
import java.util.List;
/**
*   自定义一个工具类SortUtil,把在里面实现数组可以通过compator来冒泡排,可以识别List、数组
*
*/
public class SortUtil {
        //把在里面实现数组可以通过compator来冒泡排序,这边适用List
        public static <T> List<T> sort(List<T> arr,Comparator<T> com){
                for(int i=0;i<arr.size();i++){
                        for(int j=0;j<arr.size()-1;j++){
                                if(com.compare(arr.get(j),arr.get(j+1))>0){
                                        T temp = arr.get(j);
                                        arr.set(j, arr.get(j+1));
                                        arr.set(j+1, temp);
                                }
                        }
                }
                return arr;
        }
        //把在里面实现数组可以通过compator来冒泡排序,这边适用数组
        public static <T> T[] sort(T[] arr,Comparator<T> com){
                for(int i=0;i<arr.length;i++){
                        for(int j=0;j<arr.length-1;j++){
                                if(com.compare(arr[j], arr[j+1])>0){
                                        T temp = arr[j];
                                        arr[j] = arr[j+1];
                                        arr[j+1] = temp;
                                }
                        }
                }
                return arr;
        }

}



import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*
*有两种方法排序,一种用我们自己定义的MyComparator的Sort
*二是用Collection的自带接口,Collection.Sort();
*/

public class demo3 {
        public static void main(String[] args) {
                List<String> list = new ArrayList<String>();
                MyComparator<String> com = new MyComparator<String>();
               
                list.add("hhhhhhhhh");
                list.add("ccccc");
                list.add("aaaaa");
                list.add("bbbbb");
               
                //第一种
                //SortUtil.sort(list,com);
                //第二种
                Collections.sort(list);
               
                System.out.println(list);
               
               
               
               
        }
}


5 个回复

倒序浏览
学习了    不错  顶起   
回复 使用道具 举报
大神 你的标题里面 compartor --->comparator
回复 使用道具 举报
围观下。。。
回复 使用道具 举报
学习 学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马