java中LIST集合排序通用方法

本文介绍了一种内存排序方法,用于对包含基本类型数据的Map列表进行排序。该方法支持多种数据类型(如String、int、long等)的排序,并允许指定排序字段及升序或降序排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
     * 内存排序(基本类型)
     *  list 中的map排序
     * @param DataList DataList
     *  @param type 排序类型(String,int,float,long ,double)
     * @param sortName 排序字段
     * @param order    排序方式(升序"ASC" 降序"DESC")
     * @return List
     */
    public static List sort(List DataList, final String type,final String sortName,final String order)
    {

        if(DataList!=null||DataList.size()>1){ //判断是否为空和大于一条数据.
          Collections.sort(DataList, new Comparator()
        {
            public int compare(Object arg0, Object arg1)
            {
                try
                {
                    Map obj0 =  (Map)arg0;
                    Map obj1 = (Map)arg1;

                    if(type.equals("String")){
                         String s0 = (String)obj0.get(sortName);
                         String s1 =  (String)obj1.get(sortName);

                        if (s0 == null || s1 == null)
                        {
                            return s0 == null && s1 != null ? 1 :
                                    (s0 != null && s1 == null ? -1 : 0);
                        }

                        if (order.equals("ASC"))
                        {
                            return s0.compareTo(s1);
                        }

                        return s1.compareTo(s0); //倒序

                    }


                   if(type.equals("int")){
                         Integer s0 = (Integer)obj0.get(sortName);
                         Integer s1 =  (Integer)obj1.get(sortName);

                        if (s0 == null || s1 == null)
                        {
                            return s0 == null && s1 != null ? 1 :
                                    (s0 != null && s1 == null ? -1 : 0);
                        }

                        if (order.equals("ASC"))
                        {
                            return s0.compareTo(s1);
                        }

                        return s1.compareTo(s0); //倒序

                    }


                    if(type.equals("long")){
                         Long s0 = (Long)obj0.get(sortName);
                         Long s1 =  (Long)obj1.get(sortName);

                        if (s0 == null || s1 == null)
                        {
                            return s0 == null && s1 != null ? 1 :
                                    (s0 != null && s1 == null ? -1 : 0);
                        }

                        if (order.equals("ASC"))
                        {
                            return s0.compareTo(s1);
                        }

                        return s1.compareTo(s0); //倒序

                    }


                    if(type.equals("float")){
                         Float s0 = (Float)obj0.get(sortName);
                         Float s1 =  (Float)obj1.get(sortName);

                        if (s0 == null || s1 == null)
                        {
                            return s0 == null && s1 != null ? 1 :
                                    (s0 != null && s1 == null ? -1 : 0);
                        }

                        if (order.equals("ASC"))
                        {
                            return s0.compareTo(s1);
                        }

                        return s1.compareTo(s0); //倒序

                    }


                    if(type.equals("double")){
                         Double s0 = (Double)obj0.get(sortName);
                         Double s1 =  (Double)obj1.get(sortName);

                        if (s0 == null || s1 == null)
                        {
                            return s0 == null && s1 != null ? 1 :
                                    (s0 != null && s1 == null ? -1 : 0);
                        }

                        if (order.equals("ASC"))
                        {
                            return s0.compareTo(s1);
                        }

                        return s1.compareTo(s0); //倒序

                    }

 


                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }

                return 0;
            }
        });
        }

 

        return DataList;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值