java中如何找出一串时间序列中的最大,最小值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何找出一串时间序列中的最大,最小值相关的知识,希望对你有一定的参考价值。

比如从文本文件中提取出来String类型的一列时间:
13:25:59
13:26:00
13:26:01
13:26:02
13:26:03
13:26:04
13:26:06
如何造出其中的最大、最小值啊?望指点!

java.lang.String.compareTo(String)
public int compareTo(String anotherString)按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo 返回这两个字符串在位置 k 处的两个不同的 char 值,即值:

this.charAt(k)-anotherString.charAt(k)
如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,compareTo 返回这两个字符串长度的不同,即值:
this.length()-anotherString.length()

指定者:
接口 Comparable<String> 中的 compareTo
参数:
anotherString - 要比较的 String。
返回:
如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。

解决了比较大小的问题,最大值和最小值一个循环搞出来主可以了。
参考技术A //原理就是把字符串转化为date,然后就可以用date的before来比较大小,或者直接用getTime//()转换为数字来比较大小。至于数组的最大,最小,直接用冒泡或者其他的算法都可以 .
String dateStr1 = "23:12:52";
String dateStr2 = "23:12:53";

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");
Long date1 = simpleDateFormat.parse(dateStr1).getTime();
Long date2 = simpleDateFormat.parse(dateStr2).getTime();
System.out.print("the max:" + ( date1>date1?dateStr1:dateStr2 ));

本回答被提问者采纳
参考技术B 先使用simpledateformat全部格式化成时间,根据date.gettime()比较数值的大小 参考技术C 方法一,将这些String全部转换成Date全部存储到一个列表,通过快速比较算法判断出最大值和最小值;或用冒泡排序升序,第0个就是最小值,最后一个就是最大值,时间比较方法用compareTo。
方法二,将String的时、分、秒分割,全部转换成毫秒,毫秒=秒*1000+分*60*1000+时*60*60*1000,将这些毫秒存储到一个列表,使用方法一的快速比较或冒泡排序取出最大值和最小值。
参考技术D 可以这样:package test;
public class Test
public static void main(String[] args)
int[] nums = 2, 1, 4, 100, 88, 66, 123, 5, 74, 69 ;
for (int i = 0; i <= nums.length - 1; i++)
for (int j = i + 1; j <= nums.length - 1; j++)
if (nums[i] > nums[j])
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;



System.out.println("最小值为:" + nums[0] + " , 最大值为:"
+ nums[nums.length - 1]);

以上是关于java中如何找出一串时间序列中的最大,最小值的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何获取一维数组最小值

java如何在数组中取最大值和最小值

java写:在100中的10个随机数中找出最大值和最小值

怎样用numpy找出数组里最大与最小值

如何在excel中找出除去最大值以外的第二大值

java中如何取得一组数字的最大值?