BDDObject
見つかったレコードごとに 1 つずつ、「レポート」のリストを生成することが意図されていると思います。その考えに基づいて、コードは次のようになります。
public List<String> getReport(List<BDDObject> records) {
List<String> reports = new ArrayList<String>(record.size());
for (BDDObject record:records) {
String newMedcondRefChild = String.valueOf(record.getValue( IDDConstants.IDD_THERAPY_AREA_REF_VALUE))
.toLowerCase()
.trim() + String.valueOf(record.getValue(IDDConstants.IDD_THERAPY_AREA_REF_TYPE_NAME)))
.toLowerCase().trim());
reports.add(newMedcondRefChild);
}
return reports;
}
toString() が役立つかどうかという質問に関しては、それが適切であると私が考える唯一の場所は、BDDObject
それ自体です。次のようになります。
class BDDObject {
...
@Override
public String toString() {
return String.valueOf(getValue(IDDConstants.IDD_THERAPY_AREA_REF_VALUE)).toLowerCase().trim() +
String.valueOf(getValue(IDDConstants.IDD_THERAPY_AREA_REF_TYPE_NAME)).toLowerCase().trim());
}
その場合、レポートを作成する関数は簡単になります。
public List<String> getReport(List<BDDObject> records) {
List<String> reports = new ArrayList<String>(record.size());
for (BDDObject record:records) {
reports.add(record.toString());
}
return reports;
}
すべての値が連結された長い文字列が必要な場合は、次のように StringBuilder を使用できます。
public String getReport(List<BDDObject> records) {
StringBuilder sb = new StringBuilder();
for (BDDObject record:records) {
sb.append(String.valueOf(record.getValue( IDDConstants.IDD_THERAPY_AREA_REF_VALUE))
.toLowerCase()
.trim());
sb.append(String.valueOf(record.getValue(IDDConstants.IDD_THERAPY_AREA_REF_TYPE_NAME))
.toLowerCase().trim()));
}
return sb.toString();
}
これにより、互いに追加されたすべてのレコードが返されます。読みやすさには疑問がありますが、理解していただければ幸いです。StringBuilder は、(前の例のように) 文字列を繰り返し作成する必要がある場合に役立ちます。のような単一の String 操作を置き換えるために StringBuilder を使用しないでくださいString a = b.get() + c.get();
。これらの場合、コンパイラは暗黙的に StringBuilder を作成するため、実際のパフォーマンスの向上は達成されません。