`

实现对象的排序

    博客分类:
  • java
 
阅读更多

方法①:

package collsort.comparable; 

/** 
* Created by IntelliJ IDEA. 
* User: leizhimin 
* Date: 2008-3-29 22:21:19 
* Company: LavaSoft([url]http://lavasoft.blog.51cto.com[/url]) 
* 要排序的元素对象 
*/ 
public class Cat implements Comparable<Cat> { 
    private int age; 
    private String name; 

    public Cat(int age, String name) { 
        this.age = age; 
        this.name = name; 
    } 

    public int getAge() { 
        return age; 
    } 

    public void setAge(int age) { 
        this.age = age; 
    } 

    public String getName() { 
        return name; 
    } 

    public void setName(String name) { 
        this.name = name; 
    } 


    public String toString() { 
        return "Cat{" + 
                "age=" + age + 
                ", name='" + name + '\'' + 
                '}'; 
    } 

    public int compareTo(Cat o) { 
        return this.getAge() - o.getAge(); 
    } 
}

 方法②:

public static void hashMapSortTest() {
     Map<String, Integer> maps = new HashMap<String, Integer>();   
     maps.put("boy", 8);   
     maps.put("cat", 7);   
     maps.put("dog", 1);   
     maps.put("apple", 5);   
 
     Iterator i = maps.entrySet().iterator();   
     while (i.hasNext()) {   
         Map.Entry<String, Integer> entry1 = (Map.Entry<String, Integer>) i.next();   
     }   
     List<Map.Entry<String, Integer>> info = new ArrayList<Map.Entry<String, Integer>>(maps.entrySet());   
     Collections.sort(info, new Comparator<Map.Entry<String, Integer>>() {   
         public int compare(Map.Entry<String, Integer> obj1, Map.Entry<String, Integer> obj2) {   
             return obj1.getValue().compareTo(obj2.getValue()); 
         }   
     });        
}

 方法③:

import java.util.*;  
  
/*集合排序  
    List集合中可以使用Collections.sort()方法 
    在需要求逆序时可以使用Collections.reverseOrder()方法,该方法返回一个逆序比较器 
*/  
class StrLenComp implements Comparator<String>  
{  
    public int compare(String o1,String o2)  
    {  
        return o1.length()==o2.length()? o1.compareTo(o2):o1.length()-o2.length();  
    }  
}  
class CollectionDemo  
{  
    public static void main(String[] args)   
    {  
        SortDemo();  
        ReverseDemo();  
    }  
    public static void ReverseDemo()  
    {  
        List<String> ls = new ArrayList<String>();  
        ls.add("yo");  
        ls.add("a");  
        ls.add("you");  
        ls.add("ada");  
        System.out.println(ls);  
        Collections.sort(ls,Collections.reverseOrder());//逆序排序  
        System.out.println(ls);  
        Collections.sort(ls,Collections.reverseOrder(new StrLenComp()));    //逆序一个自定义比较器  
        System.out.println(ls);  
    }  
    public static void SortDemo()  
    {  
        List<String> ls = new ArrayList<String>();  
        ls.add("you");  
        ls.add("a");  
        ls.add("you");  
        ls.add("ada");  
        System.out.println(ls);  
        Collections.sort(ls);       //按照自然顺序排序  
        System.out.println(ls);  
        Collections.sort(ls,new StrLenComp());  //自定义一个比较器  
        System.out.println(ls);  
    }  
}  

 案例:

 //对后台用户用进行登录操作
    @RequestMapping(value="adminLogin",method = RequestMethod.POST)
    public String adminLogin(PrintWriter printWriter,Model model,HttpServletRequest request,String userName,String pwd)
    {
        //通过用户名和密码查询用户
        WxUser user=userService.findUserByNameAndPwd(userName,pwd);
        request.getSession().setAttribute("sessionUser",user);
        if(null!=user)
          {

              //可以进行登录,条件在前面的ajax已经校验过了,转发到后台管理的首页
              Set<WxRole> wxRoleSet=user.getWxRoles();
              Set<WxGongnengquanxian> gongnengquanxians=new HashSet<WxGongnengquanxian>();
              for(WxRole wxRole:wxRoleSet){
                  gongnengquanxians=   wxRole.getWxGongnengquanxians();
              }
          
              List<WxGongnengquanxian> wxGongnengquanxianList = new ArrayList<WxGongnengquanxian>();
              wxGongnengquanxianList.addAll(gongnengquanxians);//将set所有元素添加到list
              Collections.sort(wxGongnengquanxianList, new Comparator<WxGongnengquanxian>() {//进行排序
                  @Override
                  public int compare(WxGongnengquanxian o1, WxGongnengquanxian o2) {
                      return o2.getWxGongnengquanxianName().compareTo(o1.getWxGongnengquanxianName());
                  }
              });
    
              model.addAttribute("gongnengquanxians",wxGongnengquanxianList);
              request.getSession().setAttribute("gnqx",gongnengquanxians);
              logService.LogStorage(request,SystemConstant.LOG_ACTION_LOGIN, SystemConstant.LOG_ACTION_SUCCESS,"后台登陆");
              return "/background/bgIndex";

          }else {
              //跳转到登录失败页面
              logService.LogStorage(request,SystemConstant.LOG_ACTION_LOGIN, SystemConstant.LOG_ACTION_FAIL,"后台登陆");
          }
        return "/background/bglogin";

    }

 

分享到:
评论

相关推荐

    面向对象实现队列的排序

    面向对象实现队列的排序,包括排序的算法,用VC++面向对象实现,继承封装多态的基本用法

    Sorter排序类实现

    1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,...

    面向对象——排序

    设计一个负责排序的程序包,实现多种排序算法,至少包括插入排序、冒泡排序和快速排序算法。 内含代码和实验报告

    山大面向对象实验 排序算法

    1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,...

    常用排序算法C++面向对象实现.doc

    分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程...

    java语言多种排序

    1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,...

    面向对象排序方法

    面向对象分析 利用继承 实现了插入排序冒泡排序 未完成 待续 。。。

    Java实现二叉排序树

    说明: 可实现:构造树,插入,查找,删除. 通过模式的选择,可以插入值相等的点.但是不建议使用.

    一个负责排序的程序包,实现多种排序算法

    1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,...

    堆排序算法Java面向对象实现源码

    堆排序算法Java面向对象实现源码,仅供学习使用,算法实现用面向对象的方式实现本身效率上是个瓶颈。所以这个实例仅供学习使用,用到项目实践中就不能了。

    设计一个负责排序的程序包,实现多种排...

    1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序...

    面向对象思想-排序算法

    运用面向对象思想完成多种排序算法,包括快速排序、选择排序、冒泡排序等,实现升序、降序、字典排序。

    Java面向对象思想的排序方法

    可以实现多种排序方法的排序,应用面向对象思想

    排序算法(直接插入排序、折半排序、直接选择排序、快速排序与归并排序)

    提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...

    C#四种排序方法--交换排序 选择排序 冒泡排序 插入排序

    交换排序 选择排序 冒泡排序 插入排序

    排序的两种实现(山东大学面向对象实验二)

    1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,...

    vue数组对象排序的实现代码

    主要介绍了vue数组对象排序的实现代码,这里整理了详细的代码,非常具有实用价值,需要的朋友可以参考下

    C++实现面向对象的堆排序和用堆实现的优先队列(装饰模式+命令模式)

    C++实现面向对象的堆排序和用堆实现的优先队列 Heap.vsd是类图,heap_test.cpp中是使用方法,把被我关掉的#if 0打开就能用了。 自己写的,做成了utility,挺好用的,先前用装饰模式做的,后来将其解耦,现在变得...

    面向对象 排序

    支持多种类型排序,例如String,int,long,实现多种方式的排序,例如冒泡,插入,快排等。适合面向对象的实验

    利用java实现排序类简单排序过程的可视化

    要求:用一个类来描述一个排序算法,类中的sort方法通过调用比较、交换方法来实现数组排序。排序类放入一个特定的包MySort中。 (1)写一个final参数类M,包括比较次数、交换次数、探测次数属性,并重写构造器和...

Global site tag (gtag.js) - Google Analytics