如果value低于先前值,则在java中检入数组并将其拆分

时间:2014-08-09 12:19:06

标签: java arrays

我有一个有时间的数组

String[] times = {"08:00", "09:15", "09:45", "08:15", "08:45", "09:30"};

我想循环遍历数组的每个值,并检查它是否高于先前的值。 如果这是真的,它会在那一点拆分数组,这样就可以获得这两个数组:

String[] times1 = {"08:00", "09:15", "09:45"};
String[] times2 = {"08:15", "08:45", "09:30"};

如何在java中执行此操作?

2 个答案:

答案 0 :(得分:0)

要拆分数组,只需使用Arrays.copyOfRange将左侧部分和右侧部分复制到两个新数组中。

//You first determine the split index
int splitIndex  = 2;
String[] times  = {"08:00", "09:15", "09:45", "08:15", "08:45", "09:30"};
String[] times1 = Arrays.copyOfRange(times,0,splitIndex + 1);
String[] times2 = Arrays.copyOfRange(times,splitIndex + 1,times.length);

要比较时间值,您可以自己解析这些简单的字符串。

public static int compareDates(String d1, String d2) {
        String[] split1 = d1.split(":");
        String[] split2 = d2.split(":");

        int n1 = Integer.parseInt(split1[0]);
        int n2 = Integer.parseInt(split2[0]);

        if (n1 != n2)
            return Integer.compare(n1,n2);
        return Integer.compare(Integer.parseInt(split1[1]),Integer.parseInt(split2[1]));
    }

其余由您决定,您只需要遍历主数组并在循环中使用这两段代码。

答案 1 :(得分:0)

使用以下代码:

String[] times = {"08:00", "09:15", "09:45", "08:15", "08:45", "09:30"};
    String first[]=null;
    String second[]=null;
    for(int i=0;i<times.length-1;i++)
    {
        Date date=new SimpleDateFormat("hh:mm").parse(times[i]);
        Date date2=new SimpleDateFormat("hh:mm").parse(times[i+1]);
        if(date.getTime()>date2.getTime())
        {
            first=Arrays.copyOfRange(times, 0, i+1);
            second=Arrays.copyOfRange(times, (i+1), (times.length));
        }
    }

希望它有所帮助。