我有一个列表,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$
按国家/地区名称排序。 我需要给出一个条件,使它进入每个国家的循环,即说RECORD 1,RECORD 2计算必须打破;记录3,4,休息;像这样记录5。 希望我现在更清楚了。
答案 0 :(得分: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
}
}
答案 1 :(得分: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
不包含完整false
中不存在的国家/地区时,record
条件才会生成myList
,否则它将是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
}
}
答案 2 :(得分: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());