[英]How to find String in ArrayList which repeats max number of time?
我有一个ArrayList<String>
,其中一列是数据时间秒等。
我想找到特定日期和时间的最大重复次数(没有秒数)。 它可以是,例如10个值,具有以下参数23.12.2012 21:00:。 因此必须说明,比如左边只有15个符号进行比较。
关键是我没有值比较,因为我没有寻找特定值,我正在寻找最大重复次数,当然还有值本身*给出了最大重复次数。 ArrayList
按降序排序,最早的日期排在最后,最后一个排序。 ArrayList
规模相当大,1.7亿原始数据。
那么,我该如何处理这项任务呢?
谢谢
这个想法非常简单。 我们将利用ArrayList<String>
的排序事实。 我们将线性扫描列表。 我们将跟踪当前项目的计数。 当项目更改为其他项目时,我们会将当前计数与目前为止看到的最大计数进行比较。 如果它更大,我们用我们跟踪的项目替换最大计数和最大项目,然后重新开始计数。 我将调用您的ArrayList<String>
list
。
ArrayList<String> list;
String currentMax;
int maxCount = 0;
String current;
int count = 0;
for(int i = 0; i < list.size(); i++) {
String item = parse(list.get(i));
if(item.equals(current)) {
count++;
}
else {
if(count > maxCount) {
maxCount = count;
currentMax = current;
}
count = 1;
current = item;
}
}
此外,您将需要编写parse
程序应用到映射String
在S ArrayList<String>
名单,你要考虑的是有日期和时间,而不是秒的部分。 如果您的字符串格式为"dd.mm.yyyy hh:mm*"
则实现非常简单:
static int length = "dd.mm.yyyy hh:mm".length();
static String parse(String item) {
return item.substring(0, length);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.