我有一个列表,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。 希望我现在更清楚了。
也许你是这个意思?
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
}
}
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
}
}
只有当record
不包含未完全myList
的国家/地区时,您的if
条件才会导致false
,否则它将至少在一次迭代中true
。
在评论中你写道:
您要计算 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
}
}
通过使用 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());