0

私は次のクラスを持っています:

class A {
    String s;
}

class Aそして、オブジェクトのリストの次のリスト:

[{1s, 3f, 46h}, {333s, 67b, 1d, 67m, 67h}, {3a, 3x}, {34n, 22o, 34s},
 {40f, 22x, 4m}... and so on]

必要なのは、このリストを繰り返し処理し、結果を取得して、別の出力arrayListにプッシュすることだけです。ここで、結果のarrayListに含まれるものは次のとおりです。

1. Just skip those elements from the above input arrayList
   which have more than one String with same prefix(only the last character
   is the suffix here which will always be a single character alphabet; not digit).
   For example: from the above input arrayList the first element({1s, 3f, 46h}) 
   won't be skipped and will be pushed into the output arrayList
   as it doesn't have any String with the same prefix; as 1, 3 and 46 are different.
   But 2nd, 3rd and 4th elements will be skipped as they have matches
   (three prefixes with same 67 in 2nd element, two prefixes with same 3 in 3rd element
   and two prefixes with same 34 in 4th element).

   So, for the above input arrayList the output arrayList will be:
   [{1s, 3f, 46h}, {40f, 22x, 4m}]

誰かが私に上記の仕事を簡単かつ効率的な方法で行う方法を提案できますか?可能であればサンプルコードを教えてください。

ありがとう!

4

2 に答える 2

0

したがって、このためのテストを作成している場合、必要なことの1つは、プレフィックスを判別できるようにすることであることがわかります。文字列「55p」のAが与えられた場合、プレフィックスは「55」である必要があります。そのためのテストを書いてください。プレフィックスメソッドはどこに属しますか?おそらくAクラス自体にあります。次のようになります。

public String prefix() {
    return ...;
}

その方法を使用すると、リスト内のすべてのAを繰り返し処理して、それらのいずれかに同じプレフィックスがあるかどうかを簡単に判断できます。

于 2012-06-14T18:29:28.807 に答える
0

次のことを考慮してください。

私は論理を試しました、これがあなたのために働くならば、私は幸せになります。

`ArrayList<A> arrList` = [{1s, 3f, 46h}, {333s, 67b,67m, 67h}, {3a, 3x}, {40f, 22x, 4m}... and so on]


 ArrayList<String> newList = new ArrayList<String>();

for ( A a: arrList){

        for(String s : a) {

             int[] temp = a.indexOf(s);

             if (temp > 1){

                break; // will break the immediate loop, NOT the Outer loop

             }

            else{
                     newList.add(s);

              }

      }


}
于 2012-06-14T18:02:00.367 に答える