0

我有一个列表,List<String> myList=new ArrayList<String>();此列表包含我正在处理的国家/地区列表。

我正在处理几条记录。我需要以这样一种方式计算,即按国家/地区对记录的单独条目进行排序。我使用以下逻辑

for(int zTmp = 0; zTmp<myList.size(); zTmp++)
{
    System.out.println("COUNTRY IS"+myList.get(zTmp));
    if((record).contains(myList.get(zTmp)))
    {  
        // my next step
    }
}

我如何发现每条记录都在 if 条件之后输入。记录按国家字母顺序排序,每个国家的记录都放在一起。请纠正我。

这是我的字符串

RECORD 1@India$
RECORD 2@India$
RECORD 3@United Arab Emirates$
RECORD 4@United Arab Emirates$
RECORD 5@United Kingdom$

按国名排序。我需要给出一个条件,使其进入每个国家/地区的循环,即说记录 1,记录 2 计算必须中断;记录 3 ,4 破; 像这样记录5。希望我现在更清楚。

4

3 回答 3

0

也许你是这个意思?

String currentCountry = "";
for (String record : myList) {
    // Regex for entire string "^....$"
    // Country between '@' and '$' (the latter escaped)
    String country = record.replaceFirst("^.*@(.*)\\$$", "$1");
    if (!country.equals(currentCountry)) {
        currentCountry = country;
        ... // Deal with next country
    }
}
于 2012-11-05T10:23:27.050 回答
0
for(int zTmp = 0; zTmp<myList.size(); zTmp++)
{
    System.out.println("COUNTRY IS"+myList.get(zTmp));
    if((record).contains(myList.get(zTmp)))
    {  
        // my next step
    }
}

只有 if不包含不存在于 complete 的国家/地区,您的if条件才会导致,否则它将至少在一次迭代中出现。falserecordmyListtrue

在你写的评论中:

您要计算 3 条记录

与其使用myList,不如创建一个单独的列表(例如myChoosenCountriesList),仅在您希望if条件为真时才拥有这些国家/地区。

然后用以下代码替换您的代码:(请注意其他改进)

int countryCount = myChoosenCountriesList.size();
for(int zTmp = 0; zTmp<countryCount; zTmp++)
{
    String countryName = myChoosenCountriesList.get(zTmp);
    System.out.println("COUNTRY IS"+countryName);
    if(record.contains(countryName))
    {  
        // my next step
    }
}
于 2012-11-05T10:23:40.450 回答
0

通过使用 do while 循环实现了所需的输出,这是代码段

                 int zTmp=0;
                 do  
            {
                String country=myList.get(zTmp);
                if(inputCountry.equals(country))
                {

                    CalcDays(tmpTokens[iTmp]);
                    myDateList.clear();
                }zTmp++;
            }while(zTmp<myList.size());
于 2012-11-05T12:15:45.333 回答