字符串值时区排序

普拉巴特(Prabhat Yadav)

我想对包含时区值的字符串值进行排序,以实现可比较接口。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class TimeZoneModel implements Comparable {
    private Integer id;
    private String value;

    public int getId() {
        return id;
    }

    public String getValue() {
        return value;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setValue(String value) {
        value = value;
    }

    public TimeZoneModel(String value){
        this.value= value;
    }

    public int compareTo(Object object) {
        TimeZoneModel timezoneModel= null;

        if(object instanceof TimeZoneModel){
            timezoneModel=(TimeZoneModel)object;
        }

        return /*value.compareTo*/((timezoneModel.getValue()!=null?timezoneModel.getValue():"")).compareTo(value);
    }

    public static void main(String args[]){
        TimeZoneModel timezoneModel = new TimeZoneModel("+01:00");
        TimeZoneModel timezoneModel1 = new TimeZoneModel("+02:30");
        TimeZoneModel timezoneModel2 = new TimeZoneModel("-01:00");
        TimeZoneModel timezoneModel3 = new TimeZoneModel("-11:00");
        TimeZoneModel timezoneModel4 = new TimeZoneModel("+05:00");

         List<TimeZoneModel> timeZoneModelList = new ArrayList<TimeZoneModel>();
         timeZoneModelList.add(timezoneModel);
         timeZoneModelList.add(timezoneModel1);
         timeZoneModelList.add(timezoneModel2);
         timeZoneModelList.add(timezoneModel3);
         timeZoneModelList.add(timezoneModel4);

         Collections.sort(timeZoneModelList);

         for(TimeZoneModel timezoneModelw : timeZoneModelList){
             System.out.println(timezoneModelw.getValue());
         }
     }
 }

在上面的程序中,我想基于值进行自定义排序。我为此使用了可比的接口。

我得到的输出:

-11:00
-01:00
+05:00
+02:30
+01:00

预期的输出是:

-11:00
-01:00
+01:00
+02:30
+05:00

我想跳过字符串到整数的转换。整数对话对我来说是最后的选择。

一句话

使用以下版本的compareTo方法

@Override
    public int compareTo(Object object) {

    TimeZoneModel timezoneModel = null;

    Double val1 = 0d;
    Double val2 = 0d;

    if (object instanceof TimeZoneModel) {
        timezoneModel = (TimeZoneModel) object;

        String strVal = timezoneModel.getValue();

        if (strVal != null) {

            strVal = strVal.replace(":", ".");

            if (strVal.contains("-")) {

                val1 = Double.valueOf(strVal.replace("-", ""));
                val1 = val1 * -1;

            } else {
                val1 = Double.valueOf(strVal.replace("+", ""));
            }

        }

        String value = this.value.replace(":", ".");

        if (value.contains("-")) {

            val2 = Double.valueOf(value.replace("-", ""));
            val2 = val2 * -1;

        } else {
            val2 = Double.valueOf(value.replace("+", ""));
        }

    }

    return val2.compareTo(val1);
}

我所做的是为了进行比较,我将String值转换为Double而不丢失signminutes值。我已经使用String.replace了相同方法。(即用于删除+ - :

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数字时区值PHP获取字符串时区

来自分类Dev

字符串排序空值

来自分类Dev

排序字符串值js

来自分类Dev

字符串排序

来自分类Dev

根据方括号中的值对字符串进行排序

来自分类Dev

MySql-首先按字符串值排序

来自分类Dev

按值对字典(字符串,整数)进行排序

来自分类Dev

使用<xsl:sort>对部分字符串值进行排序

来自分类Dev

按字符串枚举值对mongo结果排序

来自分类Dev

通过特定的字符串值进行排序

来自分类Dev

NSFetchedResultsController对负字符串值进行排序

来自分类Dev

使用浮点值的Groovy字符串数组排序

来自分类Dev

按字符串日期值对数组列表排序

来自分类Dev

NSFetchedResultsController对负字符串值进行排序

来自分类Dev

在Javascript中对字符串值对数组进行排序

来自分类Dev

混合整数和字符串值的排序数组

来自分类Dev

按字符串值对对象数组进行排序

来自分类Dev

根据字符串中的特定值进行排序。

来自分类Dev

ng-repeat 按字符串值排序

来自分类Dev

根据字典值字符串中存在的“子字符串”对字典进行排序

来自分类Dev

日期时间字符串+时区

来自分类Dev

字符串转换为datetime时区

来自分类Dev

字符串中的日期时间时区

来自分类Dev

Vertica字符串时区转换

来自分类Dev

日期时间字符串+时区

来自分类Dev

更改字符串日期时区

来自分类Dev

解析具有时区偏移值的ZonedDateTime字符串

来自分类Dev

将日期值(字符串)转换为具有不同时区的时间戳

来自分类Dev

排序字符串数组