繁体   English   中英

如何在ArrayList中找到重复最多时间的String?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM