Java - 如何计算出现的频率?

时间:2015-12-23 22:06:14

标签: java list loops count

方法printearthquakes()将列出发生一次或多次地震的每个国家以及该国家检测到的地震数量。

我有两个不同的清单,其中一个包含所有国家的名称,另一个清单记录地震信息,即位置,大小等。 预期的结果看起来应该是这样的

Nepal: 1
United States of America: 9
Uzbekistan: 1 

我的程序遍布国家和地震列表,以查明是否有任何国家发生过一次或多次地震,并试图打印该国家的名称和那里发生的地震次数。

private void printearthquakes() 
{

    int numOfQuakes = 0;

    if (quakeMarkers.size()>0)
    {
      for (Marker country: countryMarkers)
       {
        boolean firstpass = false;
        for(Marker quake : quakeMarkers)
        {

            if ( country.getProperty("name").equals(quake.getProperty("country")))
            {
                numOfQuakes++;
                System.out.println(country.getProperty("name"));
                System.out.println(numOfQuakes);

            }   
        }           
    }       
  }
}

所有这一切都是重复国家名称的次数与他们在地震列表中出现的次数相同,从0开始计算:

Nepal
1
United States of America
2
United States of America
3
United States of America
4
United States of America
5
United States of America
6
United States of America
7
United States of America
8
United States of America
9
United States of America
10
Uzbekistan
11

我想知道我错在哪里以及如何解决它!

1 个答案:

答案 0 :(得分:0)

您需要为每个国家/地区重新初始化计数器,并且每个国家/地区仅显示一次结果,如下所示:

scala> val Array(n, q) = Array(1, 2)
n: Int = 1
q: Int = 2

注意:这是O(n ^ 2)版本,加速过程我建议采用另一种方法:

private void printearthquakes() {
    for (Marker country: countryMarkers) {
        int numOfQuakes = 0;
        for(Marker quake : quakeMarkers)
            if (country.getProperty("name").equals(quake.getProperty("country")))
                numOfQuakes++;
        System.out.println(country.getProperty("name"));
        System.out.println(numOfQuakes);
    }
}

仅为O(n)