複数のメソッドに文字列の配列を渡すことです私は、文字列配列を持っています。 String[] strArr = ...
。今私はそれを処理し、結果を取得したいので、私のような引数としてString配列を取る方法を作った、Javaのコーディングスタイル - Javaの?:</p> <p>でこの良いコーディングが何度も何度も
public bopolen processArray(String[] srtArr){
// .... some processing
// loop over string array, process it and create a
// list of objects with same size as array
List<Object> objList = new ArrayList<Object>(strArr.length);
for(String str : strArr) {
String[] anotherStrArr = str.split(",");
Object myObj = new MyObject(anotherStrArr[0],anotherStrArr[1]);
objList.add(myObj);
}
// .... some more processing
// ....
// loop over list and call another method
// that also takes an String array as argument like
for (Object obj: objList) { <-- will loop same times as for the String array.
boolean res = processData(obj.getDataMethod(), strArr); <-- again pass the same array as argument to another method.
// This method will get called as many time as array length.
}
}
第二の方法:
public boolean processData(String data, String[] strArr) {
// ..... some processing.
// loop over String array and compare with data to process.
for(String str: strArr) {
String[] againStrArr = str.split(",");
if(againStrArr[0].equals(data)) {
// ... process on data and get the result.
}
}
// ..... other statements of method.
}
だから、あなたが見ることができるように同じ配列を2つのメソッドに渡して、何度も何度も繰り返します。私の配列のサイズが非常に長く、通常の場合には約2000個の要素であるため、Javaではこの良い習慣です。私はこのくらいのループだ理由について
説明:
私は、データベースに更新する必要がDB_NAMEとmyObjectというのdb_scoreを含むリクエストからString配列を得ました。 strArrの各要素はカンマで区切られ、db_name,db_score
などのdb値で区切られています。最初に配列をループし、すべての名前の文字列をコンマで区切って作成し、次にデータベースでクエリを実行してMyObjectのListを作成します。次に、このリストをループして新しいスコアでmyObjを更新しますが、名前の正確なスコアを取得するには、配列をループして名前を比較してスコアを取得する必要があります。
これは私のテーブルと呼ばれる選手である:文字列配列で
id | name | score
1 | mark | 5
2 | mark_1 | 5
3 | mark_2 | 5
4 | mark_3 | 5
サンプルデータ:今、私は、配列を反復処理し、カンマで区切られた名前の文字列を作成するなどクエリでそれを使用{"mark,10","mark_1,15","mark_2,20","mark_3,30"}
:
select * from myObject where name in ('mark','mark_2','mark_2','mark_3')
|_________________________________|
|
this much part is built from looping over the String array
したがって、最初の繰り返しはwhere句クエリのこのクエリはList of MyObjectを返します。 2回目に、このリストを繰り返してプレイヤーのスコアを更新します。しかし、特定のプレイヤー名の得点を得るためには、strArrayを繰り返し処理して見つける必要があります。したがって、リストの各要素について、メソッドを呼び出してplayerNameとstrArrを渡してスコアを取得し、最後にデータベースで更新する必要があります。
一つだけの事かもしれません想定し、常にあなたの
id
列でフィルタリングする必要があり、そうすれば、別のループをなくすことができます(そこに2つの方法がある理由を特定しない限り)。 – kosa@thinksteep:2つの方法を持つ唯一の理由は、リストがここに示すようにビルドされていないことです。実際にはデータベースから取得されます。 –
配列全体をループするのは悪いコーディングではありませんが、実際には同じ配列を渡してループしてから、新しいArrayListを作成してから再度ループすることが懸念されます。あなたは何をしようとしているのかを明確にしてから、何らかの処理を排除するのを助けることができます。 – medopal