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$

国名順に並べ替えました。すべての国に対してループに入るように条件を与える必要があります。つまり、RECORD 1、RECORD 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
    }
}

条件は、完全に存在しない国が含まれていない場合iffalseのみ発生します。それ以外の場合は、少なくとも1回の反復で発生します。recordmyListtrue

あなたが書いたコメントで:

3つのレコードを計算したい

を使用する代わりに、条件を真にしたい場合にのみ、それらの国を持つmyList別のリスト(たとえば)を作成します。myChoosenCountriesListif

次に、コードを次のように置き換えます:(他の改善点にも注意してください)

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 に答える