私はmyArrayListにすでに値が入っています。この例では、その中に2つの要素(firstNameとlastName)しかないとします。私はmyArrayListから値を取得し、文字列にそれらを比較する必要があり、それが一致したならば、豆から値を取得し、マップにそれを置く:あなたはmyArrayListで三〇から四〇要素を持っているときより良いデザインパターン?
Map<String,String> myMap;
for(String element: myArrayList){
if(element.equalsIgnoreCase("firstName")){
myMap.put("firstName", bean.getFirstName());
}else if(element.equalsIgnoreCase("lastName")){
myMap.put("lastName", bean.getLastName());
}
}
問題があるあなたが持っているだろうパフォーマンス上の問題(私が想定している)、それはちょうどいい気分にはならない。
私はこれを試してみました:
String name = null;
String value = null;
for(int i = 0; i < myArrayList.size(); i++){
name = myArrayList.get(i);
value = bean.get(name);
myMap.put(name, value);
}
しかしライン "値= bean.get(名);"
public class Bean implements Serializable {
private String firstName;
private String lastName;
public String getFirstName(){
return firstName;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public String getLastName(){
return lastName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
}
は、今私が来る可能性がどのように考えています:Beanクラスで定義されていない、確かに我々は、Beanクラスでは、このようなメソッドを持っていない、それだけで、標準のgetterメソッドとsetterメソッドを持っている(文字列)というメソッドが得ると言っています私のロジックを最適化し、コードのパフォーマンスに影響を与えないいくつかのデザインパターンがあります。お気軽に質問してください、あなたがもっと情報を必要とする場合は編集します。どんな助けでも大歓迎です。ありがとう。
編集:shmoselの答えは私にとってはかなり良かった、あなたの助けをすべてありがとう!乾杯!
30〜40個の要素では、最適化から大幅な改善は見られませんが、1000個の要素があります。 (より洗練されたコードを意味するならば、それでも最適化するのは良いことです) – 4castle
あなたは反射を使ってBeanのプロパティを取得しようとしているようです。 http://stackoverflow.com/questions/5856895/java-reflection-beans-property-apiを参照することもできますが、リフレクションの使用にはパフォーマンス上のオーバーヘッドがあることに注意してください。 Java 8を使用している場合は、( "lastName"、Bean :: getLastName)のような値を持つHashMap>を名前で素早く検索することができます。 –
http://stackoverflow.com/questions/8524011/java-reflection-how-can-i-get-the-all-getter-methods-of-a-java-class-and-invoke –